summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authoralbert-github <albert.tests@gmail.com>2018-07-07 12:47:33 (GMT)
committeralbert-github <albert.tests@gmail.com>2018-07-07 12:47:33 (GMT)
commitb4e535197890521306d30e0713ca8b88a98f7bf7 (patch)
tree7c3470e8c80883bab3c1fffac2881721d5b76e7e /src
parent21c4175dbc32b57165a6d7af3e8620700f044e7c (diff)
downloadDoxygen-b4e535197890521306d30e0713ca8b88a98f7bf7.zip
Doxygen-b4e535197890521306d30e0713ca8b88a98f7bf7.tar.gz
Doxygen-b4e535197890521306d30e0713ca8b88a98f7bf7.tar.bz2
Bug 667993 - HTML tags <u> and </u> not supported
Added underline possibility and strike through possibility for the different output formats insofar it is possible (other similar possibilities are not always possible for all output formats either).
Diffstat (limited to 'src')
-rw-r--r--src/cmdmapper.cpp2
-rw-r--r--src/cmdmapper.h2
-rw-r--r--src/docbookvisitor.cpp2
-rw-r--r--src/docparser.cpp35
-rw-r--r--src/docparser.h4
-rw-r--r--src/doctokenizer.l4
-rw-r--r--src/htmldocvisitor.cpp6
-rw-r--r--src/latexdocvisitor.cpp8
-rw-r--r--src/mandocvisitor.cpp7
-rw-r--r--src/perlmodgen.cpp2
-rw-r--r--src/printdocvisitor.h6
-rw-r--r--src/rtfdocvisitor.cpp6
-rw-r--r--src/xmldocvisitor.cpp6
13 files changed, 85 insertions, 5 deletions
diff --git a/src/cmdmapper.cpp b/src/cmdmapper.cpp
index 2c8effc..71da3f3 100644
--- a/src/cmdmapper.cpp
+++ b/src/cmdmapper.cpp
@@ -193,6 +193,8 @@ CommandMap htmlTagMap[] =
{ "span", HTML_SPAN },
{ "div", HTML_DIV },
{ "blockquote", HTML_BLOCKQUOTE },
+ { "strike", HTML_STRIKE },
+ { "u", HTML_UNDERLINE },
{ "c", XML_C },
// { "code", XML_CODE }, <= ambiguous <code> is also a HTML tag
diff --git a/src/cmdmapper.h b/src/cmdmapper.h
index 8cb529d..d06de63 100644
--- a/src/cmdmapper.h
+++ b/src/cmdmapper.h
@@ -175,6 +175,8 @@ enum HtmlTagType
HTML_SPAN = 31,
HTML_DIV = 32,
HTML_BLOCKQUOTE= 33,
+ HTML_STRIKE = 34,
+ HTML_UNDERLINE = 35,
XML_CmdMask = 0x100,
diff --git a/src/docbookvisitor.cpp b/src/docbookvisitor.cpp
index ab10da0..b83317c 100644
--- a/src/docbookvisitor.cpp
+++ b/src/docbookvisitor.cpp
@@ -196,6 +196,8 @@ void DocbookDocVisitor::visit(DocStyleChange *s)
/* There is no equivalent Docbook tag for rendering Small text */
case DocStyleChange::Small: /* XSLT Stylesheets can be used */ break;
/* HTML only */
+ case DocStyleChange::Strike: break;
+ case DocStyleChange::Underline: break;
case DocStyleChange::Div: /* HTML only */ break;
case DocStyleChange::Span: /* HTML only */ break;
}
diff --git a/src/docparser.cpp b/src/docparser.cpp
index 205e818..fba02f4 100644
--- a/src/docparser.cpp
+++ b/src/docparser.cpp
@@ -1056,7 +1056,8 @@ const char *DocStyleChange::styleString() const
case DocStyleChange::Superscript: return "superscript";
case DocStyleChange::Preformatted: return "pre";
case DocStyleChange::Div: return "div";
- case DocStyleChange::Span: return "span";
+ case DocStyleChange::Strike: return "strike";
+ case DocStyleChange::Underline: return "u";
}
return "<invalid>";
}
@@ -1582,6 +1583,26 @@ reparsetoken:
handleStyleLeave(parent,children,DocStyleChange::Bold,tokenName);
}
break;
+ case HTML_STRIKE:
+ if (!g_token->endTag)
+ {
+ handleStyleEnter(parent,children,DocStyleChange::Strike,&g_token->attribs);
+ }
+ else
+ {
+ handleStyleLeave(parent,children,DocStyleChange::Strike,tokenName);
+ }
+ break;
+ case HTML_UNDERLINE:
+ if (!g_token->endTag)
+ {
+ handleStyleEnter(parent,children,DocStyleChange::Underline,&g_token->attribs);
+ }
+ else
+ {
+ handleStyleLeave(parent,children,DocStyleChange::Underline,tokenName);
+ }
+ break;
case HTML_CODE:
case XML_C:
if (!g_token->endTag)
@@ -5905,6 +5926,12 @@ int DocPara::handleHtmlStartTag(const QCString &tagName,const HtmlAttribList &ta
case HTML_BOLD:
handleStyleEnter(this,m_children,DocStyleChange::Bold,&g_token->attribs);
break;
+ case HTML_STRIKE:
+ handleStyleEnter(this,m_children,DocStyleChange::Strike,&g_token->attribs);
+ break;
+ case HTML_UNDERLINE:
+ handleStyleEnter(this,m_children,DocStyleChange::Underline,&g_token->attribs);
+ break;
case HTML_CODE:
if (/*getLanguageFromFileName(g_fileName)==SrcLangExt_CSharp ||*/ g_xmlComment)
// for C# source or inside a <summary> or <remark> section we
@@ -6314,6 +6341,12 @@ int DocPara::handleHtmlEndTag(const QCString &tagName)
case HTML_BOLD:
handleStyleLeave(this,m_children,DocStyleChange::Bold,"b");
break;
+ case HTML_STRIKE:
+ handleStyleLeave(this,m_children,DocStyleChange::Strike,"strike");
+ break;
+ case HTML_UNDERLINE:
+ handleStyleLeave(this,m_children,DocStyleChange::Underline,"u");
+ break;
case HTML_CODE:
handleStyleLeave(this,m_children,DocStyleChange::Code,"code");
break;
diff --git a/src/docparser.h b/src/docparser.h
index d7390c2..6b75426 100644
--- a/src/docparser.h
+++ b/src/docparser.h
@@ -367,7 +367,9 @@ class DocStyleChange : public DocNode
Superscript = (1<<6),
Preformatted = (1<<7),
Span = (1<<8),
- Div = (1<<9)
+ Div = (1<<9),
+ Strike = (1<<10),
+ Underline = (1<<11)
};
DocStyleChange(DocNode *parent,uint position,Style s,bool enable,
diff --git a/src/doctokenizer.l b/src/doctokenizer.l
index e6b8865..64e8d78 100644
--- a/src/doctokenizer.l
+++ b/src/doctokenizer.l
@@ -394,8 +394,8 @@ WORD1NQ {ESCWORD}|{CHARWORDQ}+|"{"|"}"
WORD2NQ "."|","|"("|")"|"["|"]"|":"|";"|"\?"|"="|"'"
CAPTION [cC][aA][pP][tT][iI][oO][nN]
HTMLTAG "<"(("/")?){ID}({WS}+{ATTRIB})*{WS}*(("/")?)">"
-HTMLKEYL "strong"|"center"|"table"|"caption"|"small"|"code"|"dfn"|"var"|"img"|"pre"|"sub"|"sup"|"tr"|"td"|"th"|"ol"|"ul"|"li"|"tt"|"kbd"|"em"|"hr"|"dl"|"dt"|"dd"|"br"|"i"|"a"|"b"|"p"
-HTMLKEYU "STRONG"|"CENTER"|"TABLE"|"CAPTION"|"SMALL"|"CODE"|"DFN"|"VAR"|"IMG"|"PRE"|"SUB"|"SUP"|"TR"|"TD"|"TH"|"OL"|"UL"|"LI"|"TT"|"KBD"|"EM"|"HR"|"DL"|"DT"|"DD"|"BR"|"I"|"A"|"B"|"P"
+HTMLKEYL "strong"|"center"|"table"|"caption"|"small"|"code"|"dfn"|"var"|"img"|"pre"|"sub"|"sup"|"tr"|"td"|"th"|"ol"|"ul"|"li"|"tt"|"kbd"|"em"|"hr"|"dl"|"dt"|"dd"|"br"|"i"|"a"|"b"|"p"|"strike"|"u"
+HTMLKEYU "STRONG"|"CENTER"|"TABLE"|"CAPTION"|"SMALL"|"CODE"|"DFN"|"VAR"|"IMG"|"PRE"|"SUB"|"SUP"|"TR"|"TD"|"TH"|"OL"|"UL"|"LI"|"TT"|"KBD"|"EM"|"HR"|"DL"|"DT"|"DD"|"BR"|"I"|"A"|"B"|"P"|"STRIKE"|"U"
HTMLKEYW {HTMLKEYL}|{HTMLKEYU}
REFWORD2_PRE ("#"|"::")?((({ID}{TEMPLPART}?)|{ANONNS})("."|"#"|"::"|"-"|"/"))*({ID}{TEMPLPART}?(":")?)
REFWORD2 {REFWORD2_PRE}{FUNCARG2}?
diff --git a/src/htmldocvisitor.cpp b/src/htmldocvisitor.cpp
index 6a9c142..c3b9066 100644
--- a/src/htmldocvisitor.cpp
+++ b/src/htmldocvisitor.cpp
@@ -271,6 +271,12 @@ void HtmlDocVisitor::visit(DocStyleChange *s)
case DocStyleChange::Bold:
if (s->enable()) m_t << "<b" << htmlAttribsToString(s->attribs()) << ">"; else m_t << "</b>";
break;
+ case DocStyleChange::Strike:
+ if (s->enable()) m_t << "<strike" << htmlAttribsToString(s->attribs()) << ">"; else m_t << "</strike>";
+ break;
+ case DocStyleChange::Underline:
+ if (s->enable()) m_t << "<u" << htmlAttribsToString(s->attribs()) << ">"; else m_t << "</u>";
+ break;
case DocStyleChange::Italic:
if (s->enable()) m_t << "<em" << htmlAttribsToString(s->attribs()) << ">"; else m_t << "</em>";
break;
diff --git a/src/latexdocvisitor.cpp b/src/latexdocvisitor.cpp
index 7fd27bb..58c5d52 100644
--- a/src/latexdocvisitor.cpp
+++ b/src/latexdocvisitor.cpp
@@ -242,7 +242,13 @@ void LatexDocVisitor::visit(DocStyleChange *s)
switch (s->style())
{
case DocStyleChange::Bold:
- if (s->enable()) m_t << "{\\bfseries "; else m_t << "}";
+ if (s->enable()) m_t << "{\\bfseries{"; else m_t << "}}";
+ break;
+ case DocStyleChange::Strike:
+ if (s->enable()) m_t << "\\sout{"; else m_t << "}";
+ break;
+ case DocStyleChange::Underline:
+ if (s->enable()) m_t << "\\uline{"; else m_t << "}";
break;
case DocStyleChange::Italic:
if (s->enable()) m_t << "{\\itshape "; else m_t << "}";
diff --git a/src/mandocvisitor.cpp b/src/mandocvisitor.cpp
index 2233cc6..e09cc8e 100644
--- a/src/mandocvisitor.cpp
+++ b/src/mandocvisitor.cpp
@@ -120,6 +120,13 @@ void ManDocVisitor::visit(DocStyleChange *s)
if (s->enable()) m_t << "\\fB"; else m_t << "\\fP";
m_firstCol=FALSE;
break;
+ case DocStyleChange::Strike:
+ /* not supported */
+ break;
+ case DocStyleChange::Underline: //underline is shown as emphasis
+ if (s->enable()) m_t << "\\fI"; else m_t << "\\fP";
+ m_firstCol=FALSE;
+ break;
case DocStyleChange::Italic:
if (s->enable()) m_t << "\\fI"; else m_t << "\\fP";
m_firstCol=FALSE;
diff --git a/src/perlmodgen.cpp b/src/perlmodgen.cpp
index ef5cbc2..2bf03d1 100644
--- a/src/perlmodgen.cpp
+++ b/src/perlmodgen.cpp
@@ -626,6 +626,8 @@ void PerlModDocVisitor::visit(DocStyleChange *s)
switch (s->style())
{
case DocStyleChange::Bold: style = "bold"; break;
+ case DocStyleChange::Strike: style = "strike"; break;
+ case DocStyleChange::Underline: style = "underline"; break;
case DocStyleChange::Italic: style = "italic"; break;
case DocStyleChange::Code: style = "code"; break;
case DocStyleChange::Subscript: style = "subscript"; break;
diff --git a/src/printdocvisitor.h b/src/printdocvisitor.h
index d1dbb74..8d9a2b9 100644
--- a/src/printdocvisitor.h
+++ b/src/printdocvisitor.h
@@ -91,6 +91,12 @@ class PrintDocVisitor : public DocVisitor
case DocStyleChange::Bold:
if (s->enable()) printf("<bold>"); else printf("</bold>");
break;
+ case DocStyleChange::Strike:
+ if (s->enable()) printf("<strike>"); else printf("</strike>");
+ break;
+ case DocStyleChange::Underline:
+ if (s->enable()) printf("<underline>"); else printf("</underline>");
+ break;
case DocStyleChange::Italic:
if (s->enable()) printf("<italic>"); else printf("</italic>");
break;
diff --git a/src/rtfdocvisitor.cpp b/src/rtfdocvisitor.cpp
index ec6d015..7fbfdc8 100644
--- a/src/rtfdocvisitor.cpp
+++ b/src/rtfdocvisitor.cpp
@@ -192,6 +192,12 @@ void RTFDocVisitor::visit(DocStyleChange *s)
case DocStyleChange::Bold:
if (s->enable()) m_t << "{\\b "; else m_t << "} ";
break;
+ case DocStyleChange::Strike:
+ if (s->enable()) m_t << "{\\strike "; else m_t << "} ";
+ break;
+ case DocStyleChange::Underline:
+ if (s->enable()) m_t << "{\\ul "; else m_t << "} ";
+ break;
case DocStyleChange::Italic:
if (s->enable()) m_t << "{\\i "; else m_t << "} ";
break;
diff --git a/src/xmldocvisitor.cpp b/src/xmldocvisitor.cpp
index 93765b1..7c31687 100644
--- a/src/xmldocvisitor.cpp
+++ b/src/xmldocvisitor.cpp
@@ -164,6 +164,12 @@ void XmlDocVisitor::visit(DocStyleChange *s)
case DocStyleChange::Bold:
if (s->enable()) m_t << "<bold>"; else m_t << "</bold>";
break;
+ case DocStyleChange::Strike:
+ if (s->enable()) m_t << "<strike>"; else m_t << "</strike>";
+ break;
+ case DocStyleChange::Underline:
+ if (s->enable()) m_t << "<underline>"; else m_t << "</underline>";
+ break;
case DocStyleChange::Italic:
if (s->enable()) m_t << "<emphasis>"; else m_t << "</emphasis>";
break;