diff options
author | Thibaut Cuvelier <cuvelier.thibaut@gmail.com> | 2022-08-05 01:17:31 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-09-02 02:06:51 +0000 |
commit | f79ab600327f3ad884d5434bfa402f90e4815469 (patch) | |
tree | 16b61b1be08633050b65a1af851b6d24a4de5e2c /src | |
parent | 3df78c886e4c4d4143b537086b0314679e99d18c (diff) | |
download | qttools-f79ab600327f3ad884d5434bfa402f90e4815469.tar.gz |
Revamp support for formatting
With more details:
- Implement subscript in parameters indicated with _
- Implement \uicontrol / ATOM_FORMATTING_UICONTROL
- Add a warning for unsupported formatting. These new warnings mostly indicate where qdoc should be improved.
Change-Id: I7a31e095e3a1a40c2f99e34a0dbc97f55bf3e081
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
(cherry picked from commit c94077d477c6087c040316edfe6f92d011ffc3ab)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/qdoc/docbookgenerator.cpp | 38 | ||||
-rw-r--r-- | src/qdoc/docbookgenerator.h | 1 |
2 files changed, 32 insertions, 7 deletions
diff --git a/src/qdoc/docbookgenerator.cpp b/src/qdoc/docbookgenerator.cpp index efdfbc79f..63421c1a3 100644 --- a/src/qdoc/docbookgenerator.cpp +++ b/src/qdoc/docbookgenerator.cpp @@ -353,15 +353,36 @@ qsizetype DocBookGenerator::generateAtom(const Atom *atom, const Node *relative) m_writer->writeStartElement(dbNamespace, "emphasis"); m_writer->writeAttribute("role", "underline"); } else if (atom->string() == ATOM_FORMATTING_SUBSCRIPT) { - m_writer->writeStartElement(dbNamespace, "sub"); + m_writer->writeStartElement(dbNamespace, "subscript"); } else if (atom->string() == ATOM_FORMATTING_SUPERSCRIPT) { - m_writer->writeStartElement(dbNamespace, "sup"); + m_writer->writeStartElement(dbNamespace, "superscript"); } else if (atom->string() == ATOM_FORMATTING_TELETYPE || atom->string() == ATOM_FORMATTING_PARAMETER) { m_writer->writeStartElement(dbNamespace, "code"); if (atom->string() == ATOM_FORMATTING_PARAMETER) m_writer->writeAttribute("role", "parameter"); + else // atom->string() == ATOM_FORMATTING_TELETYPE + m_inTeletype = true; + + // For parameters, understand subscripts. + if (atom->string() == ATOM_FORMATTING_PARAMETER) { + if (atom->next() != nullptr && atom->next()->type() == Atom::String) { + QRegularExpression subscriptRegExp("^([a-z]+)_([0-9n])$"); + auto match = subscriptRegExp.match(atom->next()->string()); + if (match.hasMatch()) { + m_writer->writeCharacters(match.captured(1)); + m_writer->writeStartElement(dbNamespace, "subscript"); + m_writer->writeCharacters(match.captured(2)); + m_writer->writeEndElement(); // subscript + skipAhead = 1; + } + } + } + } else if (atom->string() == ATOM_FORMATTING_UICONTROL) { + m_writer->writeStartElement(dbNamespace, "guilabel"); + } else { + relative->location().warning(QStringLiteral("Unsupported formatting: %1").arg(atom->string())); } break; case Atom::FormattingRight: @@ -370,11 +391,14 @@ qsizetype DocBookGenerator::generateAtom(const Atom *atom, const Node *relative) || atom->string() == ATOM_FORMATTING_SUBSCRIPT || atom->string() == ATOM_FORMATTING_SUPERSCRIPT || atom->string() == ATOM_FORMATTING_TELETYPE - || atom->string() == ATOM_FORMATTING_PARAMETER) { + || atom->string() == ATOM_FORMATTING_PARAMETER + || atom->string() == ATOM_FORMATTING_UICONTROL) { m_writer->writeEndElement(); - } - if (atom->string() == ATOM_FORMATTING_LINK) + } else if (atom->string() == ATOM_FORMATTING_LINK) { endLink(); + } else { + relative->location().warning(QStringLiteral("Unsupported formatting: %1").arg(atom->string())); + } break; case Atom::AnnotatedList: if (const CollectionNode *cn = m_qdb->getCollectionNode(atom->string(), Node::Group)) @@ -3354,9 +3378,9 @@ void DocBookGenerator::generateParameter(const Parameter ¶meter, const Node auto match = sub.match(paramName); if (match.hasMatch()) { m_writer->writeCharacters(match.captured(0)); - m_writer->writeStartElement(dbNamespace, "sub"); + m_writer->writeStartElement(dbNamespace, "subscript"); m_writer->writeCharacters(match.captured(1)); - m_writer->writeEndElement(); // sub + m_writer->writeEndElement(); // subscript } else { m_writer->writeCharacters(paramName); } diff --git a/src/qdoc/docbookgenerator.h b/src/qdoc/docbookgenerator.h index f2a240848..b2d2639f2 100644 --- a/src/qdoc/docbookgenerator.h +++ b/src/qdoc/docbookgenerator.h @@ -135,6 +135,7 @@ private: int currentSectionLevel {}; QStack<int> sectionLevels {}; QString m_qflagsHref {}; + bool m_inTeletype { false }; QString m_project {}; QString m_projectDescription {}; |