diff options
author | albert-github <albert.tests@gmail.com> | 2021-04-29 11:59:33 (GMT) |
---|---|---|
committer | albert-github <albert.tests@gmail.com> | 2021-04-29 11:59:33 (GMT) |
commit | 7fc02d88c173a275001a2551285be8f7f979181a (patch) | |
tree | 17c267f201b165b36d68db03bc52e5ace1a68ad9 /src/rtfdocvisitor.cpp | |
parent | a9f40a48c99af952836a3871e60ff6ca17ecdecf (diff) | |
download | Doxygen-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.cpp | 37 |
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 |