Skip to content

Commit fd6bd5f

Browse files
committed
PR doxygen#12243 reduce code duplication and some minor refactoring
1 parent 358fa2f commit fd6bd5f

11 files changed

Lines changed: 117 additions & 218 deletions

src/docbookgen.cpp

Lines changed: 15 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@
7676

7777
inline void writeDocbookString(TextStream &t,const QCString &s)
7878
{
79-
t << convertToDocBook(s);
79+
t << DocbookGenerator::convertToDocbook(s);
8080
}
8181

8282
inline void writeDocbookCodeString(bool hide,TextStream &t,const QCString &str, size_t &col, size_t stripIndentAmount)
@@ -137,12 +137,12 @@ inline void writeDocbookCodeString(bool hide,TextStream &t,const QCString &str,
137137
static void addIndexTerm(TextStream &t, QCString prim, QCString sec = "")
138138
{
139139
t << "<indexterm><primary>";
140-
t << convertToDocBook(prim);
140+
t << DocbookGenerator::convertToDocbook(prim);
141141
t << "</primary>";
142142
if (!sec.isEmpty())
143143
{
144144
t << "<secondary>";
145-
t << convertToDocBook(sec);
145+
t << DocbookGenerator::convertToDocbook(sec);
146146
t << "</secondary>";
147147
}
148148
t << "</indexterm>\n";
@@ -456,7 +456,7 @@ DB_GEN_C2("IndexSection " << is)
456456
{
457457
QCString dbk_projectName = Config_getString(PROJECT_NAME);
458458
m_t << " <info>\n";
459-
m_t << " <title>" << convertToDocBook(dbk_projectName) << "</title>\n";
459+
m_t << " <title>" << convertToDocbook(dbk_projectName) << "</title>\n";
460460
m_t << " </info>\n";
461461
}
462462
break;
@@ -768,7 +768,7 @@ DB_GEN_C
768768
void DocbookGenerator::docify(const QCString &str)
769769
{
770770
DB_GEN_C
771-
m_t << convertToDocBook(str);
771+
m_t << convertToDocbook(str);
772772
}
773773
static QCString objectLinkToString(const QCString &, const QCString &f,
774774
const QCString &anchor, const QCString &text)
@@ -784,7 +784,7 @@ DB_GEN_C
784784
{
785785
result += "<link linkend=\"_" + stripPath(f) + "\">";
786786
}
787-
result += convertToDocBook(text);
787+
result += DocbookGenerator::convertToDocbook(text);
788788
result += "</link>";
789789
return result;
790790
}
@@ -911,7 +911,7 @@ void DocbookGenerator::startMemberDoc(const QCString &clname, const QCString &me
911911
{
912912
DB_GEN_C2("m_inLevel " << m_inLevel)
913913
openSection();
914-
m_t << " <title>" << convertToDocBook(title);
914+
m_t << " <title>" << convertToDocbook(title);
915915
if (memTotal>1)
916916
{
917917
m_t << "<computeroutput>[" << memCount << "/" << memTotal << "]</computeroutput>";
@@ -1165,7 +1165,7 @@ DB_GEN_C
11651165
title = theTranslator->trCompoundMembers();
11661166
}
11671167
m_t << "<table frame=\"all\">\n";
1168-
if (!title.isEmpty()) m_t << "<title>" << convertToDocBook(title) << "</title>\n";
1168+
if (!title.isEmpty()) m_t << "<title>" << convertToDocbook(title) << "</title>\n";
11691169
m_t << " <tgroup cols=\"" << ncols << "\" align=\"left\" colsep=\"1\" rowsep=\"1\">\n";
11701170
for (int i = 0; i < ncols; i++)
11711171
{
@@ -1220,12 +1220,12 @@ DB_GEN_C
12201220
m_t << "</entry></row>\n";
12211221
}
12221222

1223-
void DocbookGenerator::startDescTable(const QCString &title,const bool hasInits)
1223+
void DocbookGenerator::startDescTable(const QCString &title,bool hasInits)
12241224
{
12251225
DB_GEN_C
12261226
int ncols = (hasInits?3:2);
12271227
m_t << "<informaltable frame=\"all\">\n";
1228-
if (!title.isEmpty()) m_t << "<title>" << convertToDocBook(title) << "</title>\n";
1228+
if (!title.isEmpty()) m_t << "<title>" << convertToDocbook(title) << "</title>\n";
12291229
m_t << " <tgroup cols=\"" << ncols << "\" align=\"left\" colsep=\"1\" rowsep=\"1\">\n";
12301230
int i = 1;
12311231
m_t << " <colspec colname='c" << i++ << "'/>\n";
@@ -1411,7 +1411,7 @@ void DocbookGenerator::writeInheritedSectionTitle(
14111411
const QCString &title, const QCString &name)
14121412
{
14131413
DB_GEN_C
1414-
m_t << theTranslator->trInheritedFrom(convertToDocBook(title), objectLinkToString(ref, file, anchor, name));
1414+
m_t << theTranslator->trInheritedFrom(convertToDocbook(title), objectLinkToString(ref, file, anchor, name));
14151415
}
14161416

14171417
void DocbookGenerator::startLocalToc(int level)
@@ -1458,7 +1458,7 @@ void DocbookGenerator::startTocEntry(const SectionInfo *si)
14581458
}
14591459
if (nextLevel <= m_tocState.maxLevel)
14601460
{
1461-
QCString label = convertToDocBook(si->label());
1461+
QCString label = convertToDocbook(si->label());
14621462
m_t << " <tocentry>";
14631463
}
14641464
}
@@ -1481,21 +1481,19 @@ void DocbookGenerator::endTocEntry(const SectionInfo *si)
14811481
static constexpr auto hex="0123456789ABCDEF";
14821482

14831483
/*! Converts a string to an DocBook-encoded string */
1484-
QCString convertToDocBook(const QCString &s, const bool retainNewline, const bool /* citeEntry */)
1484+
QCString DocbookGenerator::convertToDocbook(const QCString &s, bool retainNewline, bool /* citeEntry */)
14851485
{
14861486
if (s.isEmpty()) return s;
14871487
QCString result;
14881488
result.reserve(s.length()+32);
14891489
const char *p = s.data();
1490-
const char *q = nullptr;
1491-
int cnt = 0;
14921490
char c = 0;
14931491
while ((c=*p++))
14941492
{
14951493
switch (c)
14961494
{
14971495
case '\n':
1498-
if (retainNewline)
1496+
if (retainNewline)
14991497
{
15001498
result+="<literallayout>&#160;&#xa;</literallayout>";
15011499
result+=c;
@@ -1504,33 +1502,7 @@ QCString convertToDocBook(const QCString &s, const bool retainNewline, const boo
15041502
case '<': result+="&lt;"; break;
15051503
case '>': result+="&gt;"; break;
15061504
case '&': // possibility to have a special symbol
1507-
q = p;
1508-
cnt = 2; // we have to count & and ; as well
1509-
while ((*q >= 'a' && *q <= 'z') || (*q >= 'A' && *q <= 'Z') || (*q >= '0' && *q <= '9'))
1510-
{
1511-
cnt++;
1512-
q++;
1513-
}
1514-
if (*q == ';')
1515-
{
1516-
--p; // we need & as well
1517-
HtmlEntityMapper::SymType res = HtmlEntityMapper::instance().name2sym(QCString(p).left(cnt));
1518-
if (res == HtmlEntityMapper::Sym_Unknown)
1519-
{
1520-
p++;
1521-
result+="&amp;";
1522-
}
1523-
else
1524-
{
1525-
result+=HtmlEntityMapper::instance().docbook(res);
1526-
q++;
1527-
p = q;
1528-
}
1529-
}
1530-
else
1531-
{
1532-
result+="&amp;";
1533-
}
1505+
p = writeHtmlEntity(result, p-1, [](HtmlEntityMapper::SymType symType) { return HtmlEntityMapper::instance().docbook(symType); }, "&amp;");
15341506
break;
15351507
case '\'': result+="&apos;"; break;
15361508
case '"': result+="&quot;"; break;

src/docbookgen.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ class DocbookGenerator final : public OutputGenerator, public OutputGenIntf
178178
void addIndexItem(const QCString &,const QCString &) override;
179179
void writeNonBreakableSpace(int) override;
180180

181-
void startDescTable(const QCString &title,const bool hasInits) override;
181+
void startDescTable(const QCString &title,bool hasInits) override;
182182
void endDescTable() override;
183183
void startDescTableRow() override;
184184
void endDescTableRow() override;
@@ -322,6 +322,7 @@ class DocbookGenerator final : public OutputGenerator, public OutputGenIntf
322322

323323
void startEmbeddedDoc(int) override {}
324324
void endEmbeddedDoc() override {}
325+
static QCString convertToDocbook(const QCString &s, bool retainNewline = false, bool citeEntry = false);
325326

326327
private:
327328
void openSection(const QCString &attr=QCString());
@@ -352,7 +353,6 @@ class DocbookGenerator final : public OutputGenerator, public OutputGenIntf
352353
TocState m_tocState;
353354
};
354355

355-
QCString convertToDocBook(const QCString &s, const bool retainNewline = false, const bool citeEntry = false);
356356

357357

358358
#endif

src/docbookvisitor.cpp

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -116,15 +116,15 @@ void DocbookDocVisitor::visitPreStart(TextStream &t,
116116
t << " <imagedata";
117117
if (!width.isEmpty())
118118
{
119-
t << " width=\"" << convertToDocBook(width) << "\"";
119+
t << " width=\"" << DocbookGenerator::convertToDocbook(width) << "\"";
120120
}
121121
else
122122
{
123123
if (!height.isEmpty() && !inlineImage) t << " width=\"50%\"";
124124
}
125125
if (!height.isEmpty())
126126
{
127-
t << " depth=\"" << convertToDocBook(height) << "\"";
127+
t << " depth=\"" << DocbookGenerator::convertToDocbook(height) << "\"";
128128
}
129129
t << " align=\"center\" valign=\"middle\" scalefit=\"0\" fileref=\"" << name << "\">";
130130
t << "</imagedata>\n";
@@ -671,7 +671,7 @@ DB_VIS_C
671671
}
672672
else
673673
{
674-
m_t << "<formalpara><title>" << convertToDocBook(theTranslator->trSeeAlso()) << "</title>\n";
674+
m_t << "<formalpara><title>" << DocbookGenerator::convertToDocbook(theTranslator->trSeeAlso()) << "</title>\n";
675675
}
676676
break;
677677
case DocSimpleSect::Return:
@@ -681,7 +681,7 @@ DB_VIS_C
681681
}
682682
else
683683
{
684-
m_t << "<formalpara><title>" << convertToDocBook(theTranslator->trReturns()) << "</title>\n";
684+
m_t << "<formalpara><title>" << DocbookGenerator::convertToDocbook(theTranslator->trReturns()) << "</title>\n";
685685
}
686686
break;
687687
case DocSimpleSect::Author:
@@ -691,7 +691,7 @@ DB_VIS_C
691691
}
692692
else
693693
{
694-
m_t << "<formalpara><title>" << convertToDocBook(theTranslator->trAuthor(TRUE, TRUE)) << "</title>\n";
694+
m_t << "<formalpara><title>" << DocbookGenerator::convertToDocbook(theTranslator->trAuthor(TRUE, TRUE)) << "</title>\n";
695695
}
696696
break;
697697
case DocSimpleSect::Authors:
@@ -701,7 +701,7 @@ DB_VIS_C
701701
}
702702
else
703703
{
704-
m_t << "<formalpara><title>" << convertToDocBook(theTranslator->trAuthor(TRUE, FALSE)) << "</title>\n";
704+
m_t << "<formalpara><title>" << DocbookGenerator::convertToDocbook(theTranslator->trAuthor(TRUE, FALSE)) << "</title>\n";
705705
}
706706
break;
707707
case DocSimpleSect::Version:
@@ -711,7 +711,7 @@ DB_VIS_C
711711
}
712712
else
713713
{
714-
m_t << "<formalpara><title>" << convertToDocBook(theTranslator->trVersion()) << "</title>\n";
714+
m_t << "<formalpara><title>" << DocbookGenerator::convertToDocbook(theTranslator->trVersion()) << "</title>\n";
715715
}
716716
break;
717717
case DocSimpleSect::Since:
@@ -721,7 +721,7 @@ DB_VIS_C
721721
}
722722
else
723723
{
724-
m_t << "<formalpara><title>" << convertToDocBook(theTranslator->trSince()) << "</title>\n";
724+
m_t << "<formalpara><title>" << DocbookGenerator::convertToDocbook(theTranslator->trSince()) << "</title>\n";
725725
}
726726
break;
727727
case DocSimpleSect::Date:
@@ -731,7 +731,7 @@ DB_VIS_C
731731
}
732732
else
733733
{
734-
m_t << "<formalpara><title>" << convertToDocBook(theTranslator->trDate()) << "</title>\n";
734+
m_t << "<formalpara><title>" << DocbookGenerator::convertToDocbook(theTranslator->trDate()) << "</title>\n";
735735
}
736736
break;
737737
case DocSimpleSect::Note:
@@ -741,7 +741,7 @@ DB_VIS_C
741741
}
742742
else
743743
{
744-
m_t << "<note><title>" << convertToDocBook(theTranslator->trNote()) << "</title>\n";
744+
m_t << "<note><title>" << DocbookGenerator::convertToDocbook(theTranslator->trNote()) << "</title>\n";
745745
}
746746
break;
747747
case DocSimpleSect::Warning:
@@ -751,7 +751,7 @@ DB_VIS_C
751751
}
752752
else
753753
{
754-
m_t << "<warning><title>" << convertToDocBook(theTranslator->trWarning()) << "</title>\n";
754+
m_t << "<warning><title>" << DocbookGenerator::convertToDocbook(theTranslator->trWarning()) << "</title>\n";
755755
}
756756
break;
757757
case DocSimpleSect::Pre:
@@ -761,7 +761,7 @@ DB_VIS_C
761761
}
762762
else
763763
{
764-
m_t << "<formalpara><title>" << convertToDocBook(theTranslator->trPrecondition()) << "</title>\n";
764+
m_t << "<formalpara><title>" << DocbookGenerator::convertToDocbook(theTranslator->trPrecondition()) << "</title>\n";
765765
}
766766
break;
767767
case DocSimpleSect::Post:
@@ -771,7 +771,7 @@ DB_VIS_C
771771
}
772772
else
773773
{
774-
m_t << "<formalpara><title>" << convertToDocBook(theTranslator->trPostcondition()) << "</title>\n";
774+
m_t << "<formalpara><title>" << DocbookGenerator::convertToDocbook(theTranslator->trPostcondition()) << "</title>\n";
775775
}
776776
break;
777777
case DocSimpleSect::Copyright:
@@ -781,7 +781,7 @@ DB_VIS_C
781781
}
782782
else
783783
{
784-
m_t << "<formalpara><title>" << convertToDocBook(theTranslator->trCopyright()) << "</title>\n";
784+
m_t << "<formalpara><title>" << DocbookGenerator::convertToDocbook(theTranslator->trCopyright()) << "</title>\n";
785785
}
786786
break;
787787
case DocSimpleSect::Invar:
@@ -791,7 +791,7 @@ DB_VIS_C
791791
}
792792
else
793793
{
794-
m_t << "<formalpara><title>" << convertToDocBook(theTranslator->trInvariant()) << "</title>\n";
794+
m_t << "<formalpara><title>" << DocbookGenerator::convertToDocbook(theTranslator->trInvariant()) << "</title>\n";
795795
}
796796
break;
797797
case DocSimpleSect::Remark:
@@ -802,7 +802,7 @@ DB_VIS_C
802802
}
803803
else
804804
{
805-
m_t << "<formalpara><title>" << convertToDocBook(theTranslator->trRemarks()) << "</title>\n";
805+
m_t << "<formalpara><title>" << DocbookGenerator::convertToDocbook(theTranslator->trRemarks()) << "</title>\n";
806806
}
807807
break;
808808
case DocSimpleSect::Attention:
@@ -812,7 +812,7 @@ DB_VIS_C
812812
}
813813
else
814814
{
815-
m_t << "<caution><title>" << convertToDocBook(theTranslator->trAttention()) << "</title>\n";
815+
m_t << "<caution><title>" << DocbookGenerator::convertToDocbook(theTranslator->trAttention()) << "</title>\n";
816816
}
817817
break;
818818
case DocSimpleSect::Important:
@@ -822,7 +822,7 @@ DB_VIS_C
822822
}
823823
else
824824
{
825-
m_t << "<important><title>" << convertToDocBook(theTranslator->trImportant()) << "</title>\n";
825+
m_t << "<important><title>" << DocbookGenerator::convertToDocbook(theTranslator->trImportant()) << "</title>\n";
826826
}
827827
break;
828828
case DocSimpleSect::User:
@@ -1068,7 +1068,7 @@ DB_VIS_C
10681068
if (supportedHtmlAttribute(opt.name))
10691069
{
10701070
// process supported attributes only
1071-
m_t << " " << opt.name << "='" << convertToDocBook(opt.value) << "'";
1071+
m_t << " " << opt.name << "='" << DocbookGenerator::convertToDocbook(opt.value) << "'";
10721072
}
10731073
}
10741074
m_t << ">\n";
@@ -1122,13 +1122,13 @@ DB_VIS_C
11221122
}
11231123
else
11241124
{
1125-
m_t << " class='" << convertToDocBook(opt.value) << "'";
1125+
m_t << " class='" << DocbookGenerator::convertToDocbook(opt.value) << "'";
11261126
}
11271127
}
11281128
else if (supportedHtmlAttribute(opt.name))
11291129
{
11301130
// process supported attributes only
1131-
m_t << " " << opt.name << "='" << convertToDocBook(opt.value) << "'";
1131+
m_t << " " << opt.name << "='" << DocbookGenerator::convertToDocbook(opt.value) << "'";
11321132
}
11331133
}
11341134
m_t << ">";
@@ -1162,7 +1162,7 @@ DB_VIS_C
11621162
if (m_hide) return;
11631163
if (href.url().at(0) != '#')
11641164
{
1165-
m_t << "<link xlink:href=\"" << convertToDocBook(href.url()) << "\">";
1165+
m_t << "<link xlink:href=\"" << DocbookGenerator::convertToDocbook(href.url()) << "\">";
11661166
}
11671167
else
11681168
{
@@ -1533,10 +1533,10 @@ DB_VIS_C
15331533
}
15341534

15351535

1536-
void DocbookDocVisitor::filter(const QCString &str, const bool retainNewLine, const bool citeEntry)
1536+
void DocbookDocVisitor::filter(const QCString &str, bool retainNewLine, bool citeEntry)
15371537
{
15381538
DB_VIS_C
1539-
m_t << convertToDocBook(str, retainNewLine, citeEntry);
1539+
m_t << DocbookGenerator::convertToDocbook(str, retainNewLine, citeEntry);
15401540
}
15411541

15421542
void DocbookDocVisitor::startLink(const QCString &file,const QCString &anchor)

0 commit comments

Comments
 (0)