File indexing completed on 2024-05-12 15:37:06

0001 /*
0002     Gettext translation file analyzer
0003 
0004     SPDX-FileCopyrightText: 2007 Montel Laurent <montel@kde.org>
0005     SPDX-FileCopyrightText: 2009 Jos van den Oever <jos@vandenoever.info>
0006     SPDX-FileCopyrightText: 2014 Nick Shaforostoff <shaforostoff@gmail.com>
0007 
0008     SPDX-License-Identifier: LGPL-2.1-or-later
0009 */
0010 
0011 
0012 #ifndef POEXTRACTOR_H
0013 #define POEXTRACTOR_H
0014 
0015 #include "extractorplugin.h"
0016 
0017 namespace KFileMetaData
0018 {
0019 
0020 class POExtractor : public ExtractorPlugin
0021 {
0022     Q_OBJECT
0023     Q_PLUGIN_METADATA(IID "org.kde.kf5.kfilemetadata.ExtractorPlugin"
0024                       FILE "poextractor.json")
0025     Q_INTERFACES(KFileMetaData::ExtractorPlugin)
0026 
0027 public:
0028     explicit POExtractor(QObject* parent = nullptr);
0029 
0030     QStringList mimetypes() const override;
0031     void extract(ExtractionResult* result) override;
0032 
0033 private:
0034     void endMessage();
0035     void handleComment(const char* data, quint32 length);
0036     void handleLine(const char* data, quint32 length);
0037 
0038 
0039     enum PoState {COMMENT, MSGCTXT, MSGID, MSGID_PLURAL, MSGSTR, MSGSTR_PLURAL,
0040         WHITESPACE, ERROR};
0041     PoState state;
0042     int messages;
0043     int untranslated;
0044     int fuzzy;
0045     bool isFuzzy=false, isTranslated=false;
0046 };
0047 
0048 }
0049 
0050 #endif // PLAINTEXTEXTRACTOR_H