summaryrefslogtreecommitdiff
path: root/src/xmldocvisitor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/xmldocvisitor.cpp')
-rw-r--r--src/xmldocvisitor.cpp126
1 files changed, 20 insertions, 106 deletions
diff --git a/src/xmldocvisitor.cpp b/src/xmldocvisitor.cpp
index 8df1acf..f74a6a2 100644
--- a/src/xmldocvisitor.cpp
+++ b/src/xmldocvisitor.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2014 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -30,6 +30,7 @@
#include "parserintf.h"
#include "filename.h"
#include "config.h"
+#include "htmlentity.h"
XmlDocVisitor::XmlDocVisitor(FTextStream &t,CodeOutputInterface &ci)
: DocVisitor(DocVisitor_XML), m_t(t), m_ci(ci), m_insidePre(FALSE), m_hide(FALSE)
@@ -70,110 +71,14 @@ void XmlDocVisitor::visit(DocWhiteSpace *w)
void XmlDocVisitor::visit(DocSymbol *s)
{
if (m_hide) return;
- switch(s->symbol())
+ const char *res = HtmlEntityMapper::instance()->xml(s->symbol());
+ if (res)
{
- case DocSymbol::BSlash: m_t << "\\"; break;
- case DocSymbol::At: m_t << "@"; break;
- case DocSymbol::Less: m_t << "&lt;"; break;
- case DocSymbol::Greater: m_t << "&gt;"; break;
- case DocSymbol::Amp: m_t << "&amp;"; break;
- case DocSymbol::Dollar: m_t << "$"; break;
- case DocSymbol::Hash: m_t << "#"; break;
- case DocSymbol::DoubleColon: m_t << "::"; break;
- case DocSymbol::Percent: m_t << "%"; break;
- case DocSymbol::Pipe: m_t << "|"; break;
- case DocSymbol::Copy: m_t << "<copy/>"; break;
- case DocSymbol::Tm: m_t << "<trademark/>"; break;
- case DocSymbol::Reg: m_t << "<registered/>"; break;
- case DocSymbol::Apos: m_t << "'"; break;
- case DocSymbol::Quot: m_t << "\""; break;
- case DocSymbol::Lsquo: m_t << "<lsquo/>"; break;
- case DocSymbol::Rsquo: m_t << "<rsquo/>"; break;
- case DocSymbol::Ldquo: m_t << "<ldquo/>"; break;
- case DocSymbol::Rdquo: m_t << "<rdquo/>"; break;
- case DocSymbol::Ndash: m_t << "<ndash/>"; break;
- case DocSymbol::Mdash: m_t << "<mdash/>"; break;
- case DocSymbol::Uml: m_t << "<umlaut char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Acute: m_t << "<acute char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Grave: m_t << "<grave char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Circ: m_t << "<circ char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Tilde: m_t << "<tilde char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Szlig: m_t << "<szlig/>"; break;
- case DocSymbol::Cedil: m_t << "<cedil char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Ring: m_t << "<ring char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Slash: m_t << "<slash char=\"" << s->letter() << "\"/>"; break;
- case DocSymbol::Nbsp: m_t << "<nonbreakablespace/>"; break;
- case DocSymbol::Aelig: m_t << "<aelig/>"; break;
- case DocSymbol::AElig: m_t << "<AElig/>"; break;
- case DocSymbol::GrkGamma: m_t << "<Gamma/>"; break;
- case DocSymbol::GrkDelta: m_t << "<Delta/>"; break;
- case DocSymbol::GrkTheta: m_t << "<Theta/>"; break;
- case DocSymbol::GrkLambda: m_t << "<Lambda/>"; break;
- case DocSymbol::GrkXi: m_t << "<Xi/>"; break;
- case DocSymbol::GrkPi: m_t << "<Pi/>"; break;
- case DocSymbol::GrkSigma: m_t << "<Sigma/>"; break;
- case DocSymbol::GrkUpsilon: m_t << "<Upsilon/>"; break;
- case DocSymbol::GrkPhi: m_t << "<Phi/>"; break;
- case DocSymbol::GrkPsi: m_t << "<Psi/>"; break;
- case DocSymbol::GrkOmega: m_t << "<Omega/>"; break;
- case DocSymbol::Grkalpha: m_t << "<alpha/>"; break;
- case DocSymbol::Grkbeta: m_t << "<beta/>"; break;
- case DocSymbol::Grkgamma: m_t << "<gamma/>"; break;
- case DocSymbol::Grkdelta: m_t << "<delta/>"; break;
- case DocSymbol::Grkepsilon: m_t << "<epsilon/>"; break;
- case DocSymbol::Grkzeta: m_t << "<zeta/>"; break;
- case DocSymbol::Grketa: m_t << "<eta/>"; break;
- case DocSymbol::Grktheta: m_t << "<theta/>"; break;
- case DocSymbol::Grkiota: m_t << "<iota/>"; break;
- case DocSymbol::Grkkappa: m_t << "<kappa/>"; break;
- case DocSymbol::Grklambda: m_t << "<lambda/>"; break;
- case DocSymbol::Grkmu: m_t << "<mu/>"; break;
- case DocSymbol::Grknu: m_t << "<nu/>"; break;
- case DocSymbol::Grkxi: m_t << "<xi/>"; break;
- case DocSymbol::Grkpi: m_t << "<pi/>"; break;
- case DocSymbol::Grkrho: m_t << "<rho/>"; break;
- case DocSymbol::Grksigma: m_t << "<sigma/>"; break;
- case DocSymbol::Grktau: m_t << "<tau/>"; break;
- case DocSymbol::Grkupsilon: m_t << "<upsilon/>"; break;
- case DocSymbol::Grkphi: m_t << "<phi/>"; break;
- case DocSymbol::Grkchi: m_t << "<chi/>"; break;
- case DocSymbol::Grkpsi: m_t << "<psi/>"; break;
- case DocSymbol::Grkomega: m_t << "<omega/>"; break;
- case DocSymbol::Grkvarsigma: m_t << "<sigmaf/>"; break;
- case DocSymbol::Section: m_t << "<sect/>"; break;
- case DocSymbol::Degree: m_t << "<deg/>"; break;
- case DocSymbol::Prime: m_t << "<prime/>"; break;
- case DocSymbol::DoublePrime: m_t << "<Prime/>"; break;
- case DocSymbol::Infinity: m_t << "<infin/>"; break;
- case DocSymbol::EmptySet: m_t << "<empty/>"; break;
- case DocSymbol::PlusMinus: m_t << "<plusmn/>"; break;
- case DocSymbol::Times: m_t << "<times/>"; break;
- case DocSymbol::Minus: m_t << "<minus/>"; break;
- case DocSymbol::CenterDot: m_t << "<sdot/>"; break;
- case DocSymbol::Partial: m_t << "<part/>"; break;
- case DocSymbol::Nabla: m_t << "<nabla/>"; break;
- case DocSymbol::SquareRoot: m_t << "<radic/>"; break;
- case DocSymbol::Perpendicular: m_t << "<perp/>"; break;
- case DocSymbol::Sum: m_t << "<sum/>"; break;
- case DocSymbol::Integral: m_t << "<int/>"; break;
- case DocSymbol::Product: m_t << "<prod/>"; break;
- case DocSymbol::Similar: m_t << "<sim/>"; break;
- case DocSymbol::Approx: m_t << "<asymp/>"; break;
- case DocSymbol::NotEqual: m_t << "<ne/>"; break;
- case DocSymbol::Equivalent: m_t << "<equiv/>"; break;
- case DocSymbol::Proportional: m_t << "<prop/>"; break;
- case DocSymbol::LessEqual: m_t << "<le/>"; break;
- case DocSymbol::GreaterEqual: m_t << "<ge/>"; break;
- case DocSymbol::LeftArrow: m_t << "<larr/>"; break;
- case DocSymbol::RightArrow: m_t << "<rarr/>"; break;
- case DocSymbol::SetIn: m_t << "<isin/>"; break;
- case DocSymbol::SetNotIn: m_t << "<notin/>"; break;
- case DocSymbol::LeftCeil: m_t << "<lceil/>"; break;
- case DocSymbol::RightCeil: m_t << "<rceil/>"; break;
- case DocSymbol::LeftFloor: m_t << "<lfloor/>"; break;
- case DocSymbol::RightFloor: m_t << "<rfloor/>"; break;
- default:
- err("unknown symbol found\n");
+ m_t << res;
+ }
+ else
+ {
+ err("XML: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol(),TRUE));
}
}
@@ -350,6 +255,11 @@ void XmlDocVisitor::visit(DocInclude *inc)
filter(inc->text());
m_t << "</htmlonly>";
break;
+ case DocInclude::LatexInclude:
+ m_t << "<latexonly>";
+ filter(inc->text());
+ m_t << "</latexonly>";
+ break;
case DocInclude::VerbInclude:
m_t << "<verbatim>";
filter(inc->text());
@@ -427,9 +337,13 @@ void XmlDocVisitor::visit(DocIndexEntry *ie)
"</indexentry>";
}
-void XmlDocVisitor::visit(DocSimpleSectSep *)
+void XmlDocVisitor::visit(DocSimpleSectSep *sep)
{
- m_t << "<simplesectsep/>";
+ if (sep->parent() && sep->parent()->kind()==DocNode::Kind_SimpleSect)
+ {
+ visitPost((DocSimpleSect*)sep->parent()); // end current section
+ visitPre((DocSimpleSect*)sep->parent()); // start new section
+ }
}
void XmlDocVisitor::visit(DocCite *cite)