1 | /* This file is part of the KDE libraries |
2 | |
3 | SPDX-FileCopyrightText: 2009 Jakub Stachowski <qbast@go2.pl> |
4 | |
5 | SPDX-License-Identifier: LGPL-2.0-or-later |
6 | */ |
7 | |
8 | #ifndef LANGUAGEFILTER_H |
9 | #define LANGUAGEFILTER_H |
10 | |
11 | #include "sonnetcore_export.h" |
12 | #include <tokenizer_p.h> |
13 | |
14 | #include <QString> |
15 | |
16 | #include <memory> |
17 | |
18 | namespace Sonnet |
19 | { |
20 | class LanguageFilterPrivate; |
21 | |
22 | /** |
23 | @short Deternmines language for fragments of text |
24 | |
25 | This class takes fragments produced by supplied tokenizer and provides additional information: |
26 | language used in each fragment and if there is spell and grammar checker suitable for the fragment. |
27 | |
28 | */ |
29 | class SONNETCORE_EXPORT LanguageFilter : public AbstractTokenizer |
30 | { |
31 | public: |
32 | /** Creates language filter for given tokenizer. LanguageFilter takes complete ownership of given tokenizer. |
33 | This means that no source's methods should be called anymore. |
34 | */ |
35 | LanguageFilter(AbstractTokenizer *source); |
36 | LanguageFilter(const LanguageFilter &other); |
37 | |
38 | ~LanguageFilter() override; |
39 | |
40 | /** Language for token last returned by next() */ |
41 | QString language() const; |
42 | |
43 | /** Returns true if there is spellchecker installed for last token's language */ |
44 | bool isSpellcheckable() const; |
45 | |
46 | /** Returns true if there is grammar checker installed for last token's language */ |
47 | // bool isGrammarCheckable() const; |
48 | void setBuffer(const QString &buffer) override; |
49 | bool hasNext() const override; |
50 | Token next() override; |
51 | QString buffer() const override; |
52 | void replace(int position, int len, const QString &newWord) override; |
53 | |
54 | private: |
55 | std::unique_ptr<LanguageFilterPrivate> const d; |
56 | }; |
57 | } |
58 | #endif |
59 | |