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
18namespace Sonnet
19{
20class LanguageFilterPrivate;
21
22/**
23@short Deternmines language for fragments of text
24
25This class takes fragments produced by supplied tokenizer and provides additional information:
26language used in each fragment and if there is spell and grammar checker suitable for the fragment.
27
28*/
29class SONNETCORE_EXPORT LanguageFilter : public AbstractTokenizer
30{
31public:
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
54private:
55 std::unique_ptr<LanguageFilterPrivate> const d;
56};
57}
58#endif
59

source code of sonnet/src/core/languagefilter_p.h