summaryrefslogtreecommitdiffstats
path: root/src/rtfdocvisitor.cpp
diff options
context:
space:
mode:
authoralbert-github <albert.tests@gmail.com>2021-04-29 11:59:33 (GMT)
committeralbert-github <albert.tests@gmail.com>2021-04-29 11:59:33 (GMT)
commit7fc02d88c173a275001a2551285be8f7f979181a (patch)
tree17c267f201b165b36d68db03bc52e5ace1a68ad9 /src/rtfdocvisitor.cpp
parenta9f40a48c99af952836a3871e60ff6ca17ecdecf (diff)
downloadDoxygen-7fc02d88c173a275001a2551285be8f7f979181a.zip
Doxygen-7fc02d88c173a275001a2551285be8f7f979181a.tar.gz
Doxygen-7fc02d88c173a275001a2551285be8f7f979181a.tar.bz2
issue #8522 Javadoc: type attribute of ordered lists not preserved (in xml)
The problem was a bit deeper, it was also valid for other output formats. Implemented the `type` and `start` attribute for all relevant output types.
Diffstat (limited to 'src/rtfdocvisitor.cpp')
-rw-r--r--src/rtfdocvisitor.cpp37
1 files changed, 36 insertions, 1 deletions
diff --git a/src/rtfdocvisitor.cpp b/src/rtfdocvisitor.cpp
index 0d571dc..4ab089e 100644
--- a/src/rtfdocvisitor.cpp
+++ b/src/rtfdocvisitor.cpp
@@ -891,6 +891,20 @@ void RTFDocVisitor::visitPre(DocHtmlList *l)
m_t << "{\n";
rtf_listItemInfo[m_indentLevel].isEnum = l->type()==DocHtmlList::Ordered;
rtf_listItemInfo[m_indentLevel].number = 1;
+ rtf_listItemInfo[m_indentLevel].type = '1';
+ for (const auto &opt : l->attribs())
+ {
+ if (opt.name=="type")
+ {
+ rtf_listItemInfo[m_indentLevel].type = opt.value[0];
+ }
+ if (opt.name=="start")
+ {
+ bool ok;
+ int val = opt.value.toInt(&ok);
+ if (ok) rtf_listItemInfo[m_indentLevel].number = val;
+ }
+ }
m_lastIsPara=FALSE;
}
@@ -911,7 +925,28 @@ void RTFDocVisitor::visitPre(DocHtmlListItem *)
if (rtf_listItemInfo[m_indentLevel].isEnum)
{
m_t << getStyle("ListEnum") << "\n";
- m_t << rtf_listItemInfo[m_indentLevel].number << ".\\tab ";
+ switch (rtf_listItemInfo[m_indentLevel].type)
+ {
+ case '1':
+ m_t << rtf_listItemInfo[m_indentLevel].number;
+ break;
+ case 'a':
+ m_t << intergerToAlpha(rtf_listItemInfo[m_indentLevel].number,false);
+ break;
+ case 'A':
+ m_t << intergerToAlpha(rtf_listItemInfo[m_indentLevel].number);
+ break;
+ case 'i':
+ m_t << integerToRoman(rtf_listItemInfo[m_indentLevel].number,false);
+ break;
+ case 'I':
+ m_t << integerToRoman(rtf_listItemInfo[m_indentLevel].number);
+ break;
+ default:
+ m_t << rtf_listItemInfo[m_indentLevel].number;
+ break;
+ }
+ m_t << ".\\tab ";
rtf_listItemInfo[m_indentLevel].number++;
}
else