diff --git a/src/metadata/filemetadata.cpp b/src/metadata/filemetadata.cpp --- a/src/metadata/filemetadata.cpp +++ b/src/metadata/filemetadata.cpp @@ -44,20 +44,18 @@ // static FileMetaData FileMetaData::extract(const QString &filePath) { - FileMetaData m; - if (filePath.endsWith(QLatin1String(".po")) || filePath.endsWith(QLatin1String(".pot"))) { POExtractor extractor; - extractor.extract(filePath, m); + return extractor.extract(filePath); } else if (filePath.endsWith(QLatin1String(".xlf")) || filePath.endsWith(QLatin1String(".xliff"))) { XliffExtractor extractor; - extractor.extract(filePath, m); + return extractor.extract(filePath); } else if (filePath.endsWith(QLatin1String(".ts"))) { //POExtractor extractor; //extractor.extract(filePath, m); } - return m; + return {}; } QDataStream &operator<<(QDataStream &s, const FileMetaData &d) diff --git a/src/metadata/poextractor.h b/src/metadata/poextractor.h --- a/src/metadata/poextractor.h +++ b/src/metadata/poextractor.h @@ -32,7 +32,7 @@ public: POExtractor(); - void extract(const QString& filePath, FileMetaData& data); + FileMetaData extract(const QString& filePath); private: void endMessage(); @@ -50,5 +50,4 @@ bool isFuzzy, isTranslated; }; - #endif // PLAINTEXTEXTRACTOR_H diff --git a/src/metadata/poextractor.cpp b/src/metadata/poextractor.cpp --- a/src/metadata/poextractor.cpp +++ b/src/metadata/poextractor.cpp @@ -21,7 +21,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - #include "poextractor.h" #include @@ -125,11 +124,11 @@ #endif } -void POExtractor::extract(const QString& filePath, FileMetaData& m) +FileMetaData POExtractor::extract(const QString& filePath) { std::ifstream fstream(QFile::encodeName(filePath)); if (!fstream.is_open()) { - return; + return {}; } state = WHITESPACE; @@ -141,6 +140,7 @@ std::string line; int lines = 0; + FileMetaData m; while (std::getline(fstream, line)) { //TODO add a parsed text of translation units //QByteArray arr = QByteArray::fromRawData(line.c_str(), line.size()); @@ -189,4 +189,6 @@ //TODO m.translated_approver = m.translated_reviewer = m.translated; m.fuzzy_approver = m.fuzzy_reviewer = m.fuzzy; + + return m; } diff --git a/src/metadata/xliffextractor.h b/src/metadata/xliffextractor.h --- a/src/metadata/xliffextractor.h +++ b/src/metadata/xliffextractor.h @@ -20,7 +20,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - #ifndef XLIFFEXTRACTOR_H #define XLIFFEXTRACTOR_H @@ -30,9 +29,8 @@ { public: - XliffExtractor(); - void extract(const QString& filePath, FileMetaData& data); + XliffExtractor() = default; + FileMetaData extract(const QString& filePath); }; - #endif // PLAINTEXTEXTRACTOR_H diff --git a/src/metadata/xliffextractor.cpp b/src/metadata/xliffextractor.cpp --- a/src/metadata/xliffextractor.cpp +++ b/src/metadata/xliffextractor.cpp @@ -28,10 +28,6 @@ #include "lokalize_debug.h" #include "catalog/catalog.h" -XliffExtractor::XliffExtractor() -{ -} - class XliffHandler: public QXmlDefaultHandler { public: @@ -144,11 +140,12 @@ } -void XliffExtractor::extract(const QString& filePath, FileMetaData& m) +FileMetaData XliffExtractor::extract(const QString& filePath) { QFile file(filePath); - if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) - return; + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + return {}; + } QXmlInputSource source(&file); QXmlSimpleReader xmlReader; @@ -162,6 +159,7 @@ //TODO WordCount + FileMetaData m; m.fuzzy = handler.fuzzy; m.translated = handler.total - handler.untranslated - handler.fuzzy; m.untranslated = handler.untranslated; @@ -177,4 +175,6 @@ m.lastTranslator = handler.lastTranslator.length() ? handler.lastTranslator : handler.lastTranslator_fallback; m.translationDate = handler.lastDate.isValid() ? handler.lastDate.toString(Qt::ISODate) : handler.lastDateString_fallback; + + return m; }