From 1deea556725a6599576b3b6becbf98bd90216000 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 30 Apr 2018 16:57:48 +0200 Subject: QtXmlToSphinx: Add support for more elements Add support for and elements for the additional documentation sections. Task-number: PYSIDE-363 Change-Id: I0b04106fbe6ae1779625de333368e18bbc31b962 Reviewed-by: Alexandru Croitor --- .../shiboken2/generator/qtdoc/qtdocgenerator.cpp | 41 ++++++++++++++++++++-- sources/shiboken2/generator/qtdoc/qtdocgenerator.h | 2 ++ 2 files changed, 41 insertions(+), 2 deletions(-) (limited to 'sources') diff --git a/sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp b/sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp index b90077e84..b3b918088 100644 --- a/sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp +++ b/sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp @@ -47,6 +47,11 @@ static Indentor INDENT; static inline QString additionalDocumentationOption() { return QStringLiteral("additional-documentation"); } +static inline QString nameAttribute() { return QStringLiteral("name"); } +static inline QString titleAttribute() { return QStringLiteral("title"); } +static inline QString fullTitleAttribute() { return QStringLiteral("fulltitle"); } +static inline QString briefAttribute() { return QStringLiteral("brief"); } + static bool shouldSkip(const AbstractMetaFunction* func) { // Constructors go to separate section @@ -262,7 +267,8 @@ QtXmlToSphinx::QtXmlToSphinx(QtDocGenerator* generator, const QString& doc, cons m_handlerMap.insert(QLatin1String("tableofcontents"), &QtXmlToSphinx::handleIgnoredTag); m_handlerMap.insert(QLatin1String("quotefromfile"), &QtXmlToSphinx::handleIgnoredTag); m_handlerMap.insert(QLatin1String("skipto"), &QtXmlToSphinx::handleIgnoredTag); - m_handlerMap.insert(QLatin1String("target"), &QtXmlToSphinx::handleIgnoredTag); + m_handlerMap.insert(QLatin1String("target"), &QtXmlToSphinx::handleTargetTag); + m_handlerMap.insert(QLatin1String("page"), &QtXmlToSphinx::handlePageTag); // useless tags m_handlerMap.insert(QLatin1String("description"), &QtXmlToSphinx::handleUselessTag); @@ -632,7 +638,7 @@ void QtXmlToSphinx::handleSeeAlsoTag(QXmlStreamReader& reader) handleLinkEnd(m_seeAlsoContext.data()); m_seeAlsoContext.reset(); } - m_output << endl; + m_output << endl << endl; break; default: break; @@ -729,6 +735,8 @@ void QtXmlToSphinx::handleDotsTag(QXmlStreamReader& reader) if (consecutiveSnippet) { m_output.flush(); m_output.string()->chop(2); + } else { + m_output << INDENT << "::\n\n"; } Indentation indentation(INDENT); pushOutputBuffer(); @@ -1103,6 +1111,35 @@ void QtXmlToSphinx::handleSuperScriptTag(QXmlStreamReader& reader) } } +void QtXmlToSphinx::handlePageTag(QXmlStreamReader &reader) +{ + if (reader.tokenType() != QXmlStreamReader::StartElement) + return; + + const QStringRef title = reader.attributes().value(titleAttribute()); + if (!title.isEmpty()) + m_output << rstLabel(title.toString()); + + const QStringRef fullTitle = reader.attributes().value(fullTitleAttribute()); + if (!fullTitle.isEmpty()) { + const int size = writeEscapedRstText(m_output, fullTitle); + m_output << endl << Pad('*', size) << endl << endl; + } + + const QStringRef brief = reader.attributes().value(briefAttribute()); + if (!brief.isEmpty()) + m_output << escape(brief) << endl << endl; +} + +void QtXmlToSphinx::handleTargetTag(QXmlStreamReader &reader) +{ + if (reader.tokenType() != QXmlStreamReader::StartElement) + return; + const QStringRef name = reader.attributes().value(nameAttribute()); + if (!name.isEmpty()) + m_output << INDENT << rstLabel(name.toString()); +} + void QtXmlToSphinx::handleIgnoredTag(QXmlStreamReader&) { } diff --git a/sources/shiboken2/generator/qtdoc/qtdocgenerator.h b/sources/shiboken2/generator/qtdoc/qtdocgenerator.h index df0e5ef9c..f4db588f0 100644 --- a/sources/shiboken2/generator/qtdoc/qtdocgenerator.h +++ b/sources/shiboken2/generator/qtdoc/qtdocgenerator.h @@ -152,6 +152,8 @@ private: void handleItemTag(QXmlStreamReader& reader); void handleRawTag(QXmlStreamReader& reader); void handleCodeTag(QXmlStreamReader& reader); + void handlePageTag(QXmlStreamReader&); + void handleTargetTag(QXmlStreamReader&); void handleIgnoredTag(QXmlStreamReader& reader); void handleUnknownTag(QXmlStreamReader& reader); -- cgit v1.2.3