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