aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2/ApiExtractor/docparser.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2018-02-20 12:40:16 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2018-02-21 10:03:23 +0000
commit583375253fd7e90554ae40894cf1f69f06294b43 (patch)
tree29c018ae207f8e95de25565dc5fedcf81b77670b /sources/shiboken2/ApiExtractor/docparser.cpp
parentb461e45a8e3b6f80f9e6a3b4505867ece6799355 (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.cpp49
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();
}