File indexing completed on 2024-04-28 15:34:18

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 namespace Sonnet
0017 {
0018 class LanguageFilterPrivate;
0019 
0020 /**
0021 @short Deternmines language for fragments of text
0022 
0023 This class takes fragments produced by supplied tokenizer and provides additional information:
0024 language used in each fragment and if there is spell and grammar checker suitable for the fragment.
0025 
0026 */
0027 class SONNETCORE_EXPORT LanguageFilter : public AbstractTokenizer
0028 {
0029 public:
0030     /** Creates language filter for given tokenizer. LanguageFilter takes complete ownership of given tokenizer.
0031     This means that no source's methods should be called anymore.
0032     */
0033     LanguageFilter(AbstractTokenizer *source);
0034     LanguageFilter(const LanguageFilter &other);
0035 
0036     ~LanguageFilter() override;
0037 
0038     /** Language for token last returned by next() */
0039     QString language() const;
0040 
0041     /** Returns true if there is spellchecker installed for last token's language  */
0042     bool isSpellcheckable() const;
0043 
0044     /** Returns true if there is grammar checker installed for last token's language */
0045     //  bool isGrammarCheckable() const;
0046     void setBuffer(const QString &buffer) override;
0047     bool hasNext() const override;
0048     Token next() override;
0049     QString buffer() const override;
0050     void replace(int position, int len, const QString &newWord) override;
0051 
0052 private:
0053     LanguageFilterPrivate *const d;
0054 };
0055 }
0056 #endif