File indexing completed on 2024-04-21 04:00:54
0001 /* This file is part of the KDE libraries 0002 0003 SPDX-FileCopyrightText: 2009 Jakub Stachowski <qbast@go2.pl> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #ifndef LANGUAGEFILTER_H 0009 #define LANGUAGEFILTER_H 0010 0011 #include "sonnetcore_export.h" 0012 #include <tokenizer_p.h> 0013 0014 #include <QString> 0015 0016 #include <memory> 0017 0018 namespace Sonnet 0019 { 0020 class LanguageFilterPrivate; 0021 0022 /** 0023 @short Deternmines language for fragments of text 0024 0025 This class takes fragments produced by supplied tokenizer and provides additional information: 0026 language used in each fragment and if there is spell and grammar checker suitable for the fragment. 0027 0028 */ 0029 class SONNETCORE_EXPORT LanguageFilter : public AbstractTokenizer 0030 { 0031 public: 0032 /** Creates language filter for given tokenizer. LanguageFilter takes complete ownership of given tokenizer. 0033 This means that no source's methods should be called anymore. 0034 */ 0035 LanguageFilter(AbstractTokenizer *source); 0036 LanguageFilter(const LanguageFilter &other); 0037 0038 ~LanguageFilter() override; 0039 0040 /** Language for token last returned by next() */ 0041 QString language() const; 0042 0043 /** Returns true if there is spellchecker installed for last token's language */ 0044 bool isSpellcheckable() const; 0045 0046 /** Returns true if there is grammar checker installed for last token's language */ 0047 // bool isGrammarCheckable() const; 0048 void setBuffer(const QString &buffer) override; 0049 bool hasNext() const override; 0050 Token next() override; 0051 QString buffer() const override; 0052 void replace(int position, int len, const QString &newWord) override; 0053 0054 private: 0055 std::unique_ptr<LanguageFilterPrivate> const d; 0056 }; 0057 } 0058 #endif