File indexing completed on 2024-05-12 16:16:01

0001 /*
0002    SPDX-FileCopyrightText: 2019-2023 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "grammalecteparser.h"
0008 #include "grammalectegrammarerror.h"
0009 #include "textgrammarcheck_debug.h"
0010 #include <QJsonArray>
0011 #include <QJsonValue>
0012 
0013 using namespace TextGrammarCheck;
0014 
0015 GrammalecteParser::GrammalecteParser() = default;
0016 
0017 GrammalecteParser::~GrammalecteParser() = default;
0018 
0019 QVector<GrammarError> GrammalecteParser::parseResult(const QJsonObject &obj) const
0020 {
0021     QVector<GrammarError> infos;
0022     if (!obj.contains(QLatin1String("grammalecte"))) {
0023         qCWarning(TEXTGRAMMARCHECK_LOG) << "Error in json " << obj;
0024         return infos;
0025     }
0026     const QJsonArray array = obj.value(QLatin1String("data")).toArray();
0027     for (const QJsonValue &current : array) {
0028         if (current.type() == QJsonValue::Object) {
0029             // Check lGrammarErrors
0030             const QJsonObject grammaObject = current.toObject();
0031             const int blockId = grammaObject.value(QStringLiteral("iParagraph")).toInt();
0032             // qDebug() << " blockId " << blockId;
0033             const QJsonArray grammarErrorArray = grammaObject.value(QLatin1String("lGrammarErrors")).toArray();
0034             for (const QJsonValue &error : grammarErrorArray) {
0035                 // qDebug() << " grammarErrorArray"<<error;
0036                 TextGrammarCheck::GrammalecteGrammarError info;
0037                 if (error.type() == QJsonValue::Object) {
0038                     info.parse(error.toObject(), blockId);
0039                     if (info.isValid()) {
0040                         infos.append(std::move(info));
0041                     }
0042                 } else {
0043                     qCWarning(TEXTGRAMMARCHECK_LOG) << "Problem when parsing grammalecte error" << error;
0044                 }
0045             }
0046         } else {
0047             qCWarning(TEXTGRAMMARCHECK_LOG) << "Problem when parsing grammalecte result" << current;
0048         }
0049     }
0050     return infos;
0051 }