aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2018-04-23 17:17:29 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2018-04-24 07:09:40 +0000
commit8d555031245b0e3e222705bbdc894ad3efbaba42 (patch)
treecd52be396c6993b90b8dcbd6083037961427719b
parent55d871a8abfd9c29b96ecf7c011c3b3b9fd05d31 (diff)
QtXmlToSphinx: Handle ordered lists
Introduce an enumeration for the list type and handle ordered lists like bullet lists with a different separator. Task-number: PYSIDE-640 Change-Id: I2e770f2dd56958627e423822b8f4b1c23fdd4e16 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Christian Tismer <tismer@stackless.com>
-rw-r--r--sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp32
1 files changed, 25 insertions, 7 deletions
diff --git a/sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp b/sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp
index ebb9913cb..114ba401d 100644
--- a/sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp
+++ b/sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp
@@ -772,14 +772,25 @@ void QtXmlToSphinx::handleRowTag(QXmlStreamReader& reader)
}
}
+enum ListType { BulletList, OrderedList, EnumeratedList };
+
+static inline ListType webXmlListType(const QStringRef &t)
+{
+ if (t == QLatin1String("enum"))
+ return EnumeratedList;
+ if (t == QLatin1String("ordered"))
+ return OrderedList;
+ return BulletList;
+}
+
void QtXmlToSphinx::handleListTag(QXmlStreamReader& reader)
{
// BUG We do not support a list inside a table cell
- static QString listType;
+ static ListType listType = BulletList;
QXmlStreamReader::TokenType token = reader.tokenType();
if (token == QXmlStreamReader::StartElement) {
- listType = reader.attributes().value(QLatin1String("type")).toString();
- if (listType == QLatin1String("enum")) {
+ listType = webXmlListType(reader.attributes().value(QLatin1String("type")));
+ if (listType == EnumeratedList) {
m_currentTable << (TableRow() << "Constant" << "Description");
m_tableHasHeader = true;
}
@@ -787,19 +798,26 @@ void QtXmlToSphinx::handleListTag(QXmlStreamReader& reader)
} else if (token == QXmlStreamReader::EndElement) {
INDENT.indent++;
if (!m_currentTable.isEmpty()) {
- if (listType == QLatin1String("bullet")) {
+ switch (listType) {
+ case BulletList:
+ case OrderedList: {
m_output << endl;
+ const char *separator = listType == BulletList ? "* " : "#. ";
+ const char *indent = listType == BulletList ? " " : " ";
for (const TableCell &cell : m_currentTable.constFirst()) {
const QVector<QStringRef> itemLines = cell.data.splitRef(QLatin1Char('\n'));
- m_output << INDENT << "* " << itemLines.constFirst() << endl;
+ m_output << INDENT << separator << itemLines.constFirst() << endl;
for (int i = 1, max = itemLines.count(); i < max; ++i)
- m_output << INDENT << " " << itemLines[i] << endl;
+ m_output << INDENT << indent << itemLines[i] << endl;
}
m_output << endl;
- } else if (listType == QLatin1String("enum")) {
+ }
+ break;
+ case EnumeratedList:
m_currentTable.enableHeader(m_tableHasHeader);
m_currentTable.normalize();
m_output << ensureEndl << m_currentTable;
+ break;
}
}
m_currentTable.clear();