KItinerary

jsonlddocumentprocessor.cpp
1/*
2 SPDX-FileCopyrightText: 2017-2021 Volker Krause <vkrause@kde.org>
3
4 SPDX-License-Identifier: LGPL-2.0-or-later
5*/
6
7#include "jsonlddocumentprocessor.h"
8#include "stringutil.h"
9
10#include <KItinerary/ExtractorResult>
11
12#include <QJsonArray>
13#include <QJsonDocument>
14#include <QJsonObject>
15
16using namespace KItinerary;
17
18bool JsonLdDocumentProcessor::canHandleData(const QByteArray &encodedData, QStringView fileName) const
19{
20 return StringUtil::startsWithIgnoreSpace(encodedData, "[") ||
21 StringUtil::startsWithIgnoreSpace(encodedData, "{") ||
24}
25
27{
28 QJsonParseError error;
29 const auto doc = QJsonDocument::fromJson(encodedData, &error);
30 if (error.error != QJsonParseError::NoError) {
31 return {};
32 }
33
34 QJsonArray data;
35 if (doc.isObject()) {
36 data.push_back(doc.object());
37 } else if (doc.isArray()) {
38 data = doc.array();
39 } else {
40 return {};
41 }
42
44 node.setContent(data);
45 return node;
46}
47
48void JsonLdDocumentProcessor::preExtract(ExtractorDocumentNode &node, [[maybe_unused]] const ExtractorEngine *engine) const
49{
50 // pass through JSON data, so the using code can apply post-processing to that
51 node.addResult(node.content<QJsonArray>());
52}
A node in the extracted document object tree.
QJSValue content
The decoded content of this node.
void addResult(ExtractorResult &&result)
Add additional results from an extraction step.
void setContent(const QVariant &content)
Set decoded content.
Semantic data extraction engine.
bool canHandleData(const QByteArray &encodedData, QStringView fileName) const override
Fast check whether the given encoded data can possibly be processed by this instance.
ExtractorDocumentNode createNodeFromData(const QByteArray &encodedData) const override
Create a document node from raw data.
void preExtract(ExtractorDocumentNode &node, const ExtractorEngine *engine) const override
Called before extractors are applied to node.
bool startsWithIgnoreSpace(const QByteArray &data, const char *pattern)
Same as QByteArray::startsWith, but ignoring leading whitespaces.
Classes for reservation/travel data models, data extraction and data augmentation.
Definition berelement.h:17
void push_back(const QJsonValue &value)
QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error)
bool endsWith(QChar ch) const const
CaseInsensitive
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Tue Mar 26 2024 11:14:49 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.