blob: 39b5e93242dcb4ae808538944a7979b3f525bbd3 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#pragma once
#include "sql_highlight.h"
#include <util/generic/ptr.h>
#include <util/generic/ylimits.h>
#include <functional>
namespace NSQLHighlight {
struct TToken {
EUnitKind Kind;
size_t Begin; // In bytes
size_t Length; // In bytes
};
class IHighlighter: public TThrRefBase {
public:
using TPtr = TIntrusivePtr<IHighlighter>;
using TTokenCallback = std::function<void(TToken&& token)>;
virtual ~IHighlighter() = default;
virtual bool Tokenize(
TStringBuf text,
const TTokenCallback& onNext,
size_t maxErrors = Max<size_t>()) const = 0;
};
TVector<TToken> Tokenize(IHighlighter& highlighter, TStringBuf text);
IHighlighter::TPtr MakeHighlighter(const THighlighting& highlighting);
} // namespace NSQLHighlight
|