summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThibaut Cuvelier <cuvelier.thibaut@gmail.com>2022-08-05 01:17:31 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-09-02 02:06:51 +0000
commitf79ab600327f3ad884d5434bfa402f90e4815469 (patch)
tree16b61b1be08633050b65a1af851b6d24a4de5e2c /src
parent3df78c886e4c4d4143b537086b0314679e99d18c (diff)
downloadqttools-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.cpp38
-rw-r--r--src/qdoc/docbookgenerator.h1
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 &parameter, 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 {};