From 583375253fd7e90554ae40894cf1f69f06294b43 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 20 Feb 2018 12:40:16 +0100 Subject: 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 --- sources/shiboken2/ApiExtractor/docparser.cpp | 49 ++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 3 deletions(-) (limited to 'sources/shiboken2/ApiExtractor/docparser.cpp') 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 +#include +#include #include #include @@ -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(); } -- cgit v1.2.3