diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-02-20 12:40:16 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-02-21 10:03:23 +0000 |
commit | 583375253fd7e90554ae40894cf1f69f06294b43 (patch) | |
tree | 29c018ae207f8e95de25565dc5fedcf81b77670b /sources/shiboken2/ApiExtractor/docparser.cpp | |
parent | b461e45a8e3b6f80f9e6a3b4505867ece6799355 (diff) |
Documentation extraction: Add error handling
Trim the strings returned by the XPath queries and warn about
failing queries.
Task-number: PYSIDE-363
Change-Id: Ia0233d490497597cb78aa16b0908fe226270705c
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'sources/shiboken2/ApiExtractor/docparser.cpp')
-rw-r--r-- | sources/shiboken2/ApiExtractor/docparser.cpp | 49 |
1 files changed, 46 insertions, 3 deletions
diff --git a/sources/shiboken2/ApiExtractor/docparser.cpp b/sources/shiboken2/ApiExtractor/docparser.cpp index 50a08d7c9..1d1783f05 100644 --- a/sources/shiboken2/ApiExtractor/docparser.cpp +++ b/sources/shiboken2/ApiExtractor/docparser.cpp @@ -29,6 +29,8 @@ #include "abstractmetalang.h" #include "typesystem.h" #include <QtCore/QDebug> +#include <QtCore/QDir> +#include <QtCore/QTextStream> #include <QtXmlPatterns/QXmlQuery> #include <QBuffer> @@ -49,7 +51,7 @@ QString DocParser::getDocumentation(QXmlQuery& xquery, const QString& query, const DocModificationList& mods) const { QString doc = execXQuery(xquery, query); - return applyDocModifications(mods, doc); + return applyDocModifications(mods, doc.trimmed()); } QString DocParser::execXQuery(QXmlQuery& xquery, const QString& query) const @@ -99,6 +101,47 @@ AbstractMetaFunctionList DocParser::documentableFunctions(const AbstractMetaClas return result; } +QString DocParser::msgCannotFindDocumentation(const QString &fileName, + const char *what, const QString &name, + const QString &query) +{ + QString result; + QTextStream(&result) << "Cannot find documentation for " << what + << ' ' << name << " in:\n " << QDir::toNativeSeparators(fileName) + << "\n using query:\n " << query; + return result; +} + +QString DocParser::msgCannotFindDocumentation(const QString &fileName, + const AbstractMetaClass *metaClass, + const AbstractMetaFunction *function, + const QString &query) +{ + return msgCannotFindDocumentation(fileName, "function", + metaClass->name() + QLatin1String("::") + function->name() + QLatin1String("()"), + query); +} + +QString DocParser::msgCannotFindDocumentation(const QString &fileName, + const AbstractMetaClass *metaClass, + const AbstractMetaEnum *e, + const QString &query) +{ + return msgCannotFindDocumentation(fileName, "enum", + metaClass->name() + QLatin1String("::") + e->name(), + query); +} + +QString DocParser::msgCannotFindDocumentation(const QString &fileName, + const AbstractMetaClass *metaClass, + const AbstractMetaField *f, + const QString &query) +{ + return msgCannotFindDocumentation(fileName, "field", + metaClass->name() + QLatin1String("::") + f->name(), + query); +} + namespace { @@ -130,7 +173,7 @@ struct XslResources QString DocParser::applyDocModifications(const DocModificationList& mods, const QString& xml) const { - if (mods.isEmpty()) + if (mods.isEmpty() || xml.isEmpty()) return xml; bool hasXPathBasedModification = false; @@ -199,6 +242,6 @@ QString DocParser::applyDocModifications(const DocModificationList& mods, const } Q_ASSERT(result != xml); - return result; + return result.trimmed(); } |