aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2/ApiExtractor/doxygenparser.cpp
diff options
context:
space:
mode:
authorRenato Araujo Oliveira Filho <renato.araujo@kdab.com>2020-04-16 10:24:07 -0300
committerRenato Araujo Oliveira Filho <renato.araujo@kdab.com>2020-09-02 10:48:12 -0300
commitb3b9a9714c0f1199d547854be6d2d47a9268d444 (patch)
tree0ebfb4d3e069f4caa9f717c641414119d2f4b6c0 /sources/shiboken2/ApiExtractor/doxygenparser.cpp
parent61d1a5af4e6f17da32e302023b8a4358bccf5863 (diff)
Add support for briefdescription in doxygen parse
Extract briefdescription from doxygen files and make sure to generate sphinx docs with it Change-Id: Ibd2b104a2c85de6c3db1e8a48add061c804bd489 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'sources/shiboken2/ApiExtractor/doxygenparser.cpp')
-rw-r--r--sources/shiboken2/ApiExtractor/doxygenparser.cpp82
1 files changed, 55 insertions, 27 deletions
diff --git a/sources/shiboken2/ApiExtractor/doxygenparser.cpp b/sources/shiboken2/ApiExtractor/doxygenparser.cpp
index 7c15db1ca..9fceb4328 100644
--- a/sources/shiboken2/ApiExtractor/doxygenparser.cpp
+++ b/sources/shiboken2/ApiExtractor/doxygenparser.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt for Python.
@@ -94,12 +94,24 @@ void DoxygenParser::fillDocumentation(AbstractMetaClass* metaClass)
return;
}
+ static const QList<QPair<Documentation::Type, QString>> docTags = {
+ { Documentation::Brief, QLatin1String("briefdescription") },
+ { Documentation::Detailed, QLatin1String("detaileddescription") }
+ };
// Get class documentation
- const QString classQuery = QLatin1String("/doxygen/compounddef/detaileddescription");
- QString classDoc = getDocumentation(xquery, classQuery,
- metaClass->typeEntry()->docModifications());
- if (classDoc.isEmpty())
- qCWarning(lcShibokenDoc, "%s", qPrintable(msgCannotFindDocumentation(doxyFilePath, "class", metaClass->name(), classQuery)));
+ Documentation classDoc;
+
+ for (const auto &tag : docTags) {
+ const QString classQuery = QLatin1String("/doxygen/compounddef/") + tag.second;
+ QString doc = getDocumentation(xquery, classQuery,
+ metaClass->typeEntry()->docModifications());
+ if (doc.isEmpty())
+ qCWarning(lcShibokenDoc, "%s",
+ qPrintable(msgCannotFindDocumentation(doxyFilePath, "class", metaClass->name(),
+ classQuery)));
+ else
+ classDoc.setValue(doc, tag.first);
+ }
metaClass->setDocumentation(classDoc);
//Functions Documentation
@@ -128,28 +140,38 @@ void DoxygenParser::fillDocumentation(AbstractMetaClass* metaClass)
if (!arg->type()->isPrimitive()) {
query += QLatin1String("/../param[") + QString::number(i)
+ QLatin1String("]/type/ref[text()=\"")
- + arg->type()->name() + QLatin1String("\"]/../..");
+ + arg->type()->cppSignature().toHtmlEscaped()
+ + QLatin1String("\"]/../..");
} else {
query += QLatin1String("/../param[") + QString::number(i)
- + QLatin1String("]/type[text()=\"")
- + arg->type()->name() + QLatin1String("\"]/..");
+ + QLatin1String("]/type[text(), \"")
+ + arg->type()->cppSignature().toHtmlEscaped()
+ + QLatin1String("\"]/..");
}
++i;
}
}
}
- if (!isProperty) {
- query += QLatin1String("/../detaileddescription");
- } else {
- query = QLatin1Char('(') + query;
- query += QLatin1String("/../detaileddescription)[1]");
- }
- QString doc = getDocumentation(xquery, query, DocModificationList());
- if (doc.isEmpty()) {
- qCWarning(lcShibokenDoc, "%s",
- qPrintable(msgCannotFindDocumentation(doxyFilePath, metaClass, func, query)));
+ Documentation funcDoc;
+ for (const auto &tag : docTags) {
+ QString funcQuery(query);
+ if (!isProperty) {
+ funcQuery += QLatin1String("/../") + tag.second;
+ } else {
+ funcQuery = QLatin1Char('(') + funcQuery;
+ funcQuery += QLatin1String("/../%1)[1]").arg(tag.second);
+ }
+
+ QString doc = getDocumentation(xquery, funcQuery, DocModificationList());
+ if (doc.isEmpty()) {
+ qCWarning(lcShibokenDoc, "%s",
+ qPrintable(msgCannotFindDocumentation(doxyFilePath, metaClass, func,
+ funcQuery)));
+ } else {
+ funcDoc.setValue(doc, tag.first);
+ }
}
- func->setDocumentation(doc);
+ func->setDocumentation(funcDoc);
isProperty = false;
}
@@ -159,14 +181,20 @@ void DoxygenParser::fillDocumentation(AbstractMetaClass* metaClass)
if (field->isPrivate())
return;
- QString query = QLatin1String("/doxygen/compounddef/sectiondef/memberdef/name[text()=\"")
- + field->name() + QLatin1String("\"]/../detaileddescription");
- QString doc = getDocumentation(xquery, query, DocModificationList());
- if (doc.isEmpty()) {
- qCWarning(lcShibokenDoc, "%s",
- qPrintable(msgCannotFindDocumentation(doxyFilePath, metaClass, field, query)));
+ Documentation fieldDoc;
+ for (const auto &tag : docTags) {
+ QString query = QLatin1String("/doxygen/compounddef/sectiondef/memberdef/name[text()=\"")
+ + field->name() + QLatin1String("\"]/../") + tag.second;
+ QString doc = getDocumentation(xquery, query, DocModificationList());
+ if (doc.isEmpty()) {
+ qCWarning(lcShibokenDoc, "%s",
+ qPrintable(msgCannotFindDocumentation(doxyFilePath, metaClass, field,
+ query)));
+ } else {
+ fieldDoc.setValue(doc, tag.first);
+ }
}
- field->setDocumentation(doc);
+ field->setDocumentation(fieldDoc);
}
//Enums