Commit 1bd64ac0 authored by albert-github's avatar albert-github

Recognize all HTML4 special character entities

In doxygen a limited number of HTML4 special character entities are recognized, with this patch the full list of HTML4 special character entities (see http://www.w3.org/TR/html4/sgml/entities.html) is supported (as far as they can be represented in the output format).

- doxygen_manual.tex
- latexgen.cpp
  Added wasysym package to support per thousand sign (perthousand command from textcomp didn't work properly)
  Added option for textcomp package so currency symbol would work properly

- htmlcmds.doc
  Adjusted documentation, listing all entities

- compound.xsd
- xmlgen.cpp
  Removed in xsd file all references for special HTML4 character entities and placed placeholder so doxygen (in xmlgen.cpp)can automatically add the right element names.

- util.cpp
- util.h
  Define all entities with their representation for all output formats.
  Define access routines to the different representations
  Mapping (for recognition of the entities) based on running through the list of available entities, after validation of the order of the entities. A few entities contain now besides letters also numbers at the end.

- docparser.h
  Define symbols for all entities as well as a helper struct and enum. The member m_letter is not used anymore and thus removed.
  All existing symbols were renamed so no confusion (i.e. errors when forgetting to rename some symbols) can occur.
  Obsolete references to letter removed, all letters with accents etc. are explicitly defined and not through the generic accent name plus an extra letter.

- docparser.cpp
  Adjust used symbols to their new names.
  Remove references to letter (as used for accents etc.)
  Replace list of explicitly supported entities with call to symbol code access routine.

- docbookvisitor.cpp
- htmldocvisitor.cpp
- latexdocvisitor.cpp
- mandocvisitor.cpp
- perlmodgen.cpp
- printdocvisitor.h
- rtfdocvisitor.cpp
- textdocvisitor.cpp
- xmldocvisitor.cpp
  Replace list of explicitly supported entities with call to access routine and use returned value to output.
parent 0178674d
...@@ -24,7 +24,9 @@ ...@@ -24,7 +24,9 @@
\usepackage{color} \usepackage{color}
\usepackage{ifthen} \usepackage{ifthen}
\usepackage[table]{xcolor} \usepackage[table]{xcolor}
\PassOptionsToPackage{warn}{textcomp}
\usepackage{textcomp} \usepackage{textcomp}
\usepackage[nointegrals]{wasysym}
\usepackage{alltt} \usepackage{alltt}
\usepackage{ifpdf} \usepackage{ifpdf}
\ifpdf \ifpdf
......
This diff is collapsed.
...@@ -390,94 +390,7 @@ ...@@ -390,94 +390,7 @@
<xsd:element name="anchor" type="docAnchorType" /> <xsd:element name="anchor" type="docAnchorType" />
<xsd:element name="formula" type="docFormulaType" /> <xsd:element name="formula" type="docFormulaType" />
<xsd:element name="ref" type="docRefTextType" /> <xsd:element name="ref" type="docRefTextType" />
<xsd:element name="copy" type="docEmptyType" /> <!-- Automatically insert here the HTML entities -->
<xsd:element name="trademark" type="docEmptyType" />
<xsd:element name="registered" type="docEmptyType" />
<xsd:element name="lsquo" type="docEmptyType" />
<xsd:element name="rsquo" type="docEmptyType" />
<xsd:element name="ldquo" type="docEmptyType" />
<xsd:element name="rdquo" type="docEmptyType" />
<xsd:element name="ndash" type="docEmptyType" />
<xsd:element name="mdash" type="docEmptyType" />
<xsd:element name="umlaut" type="docCharType" />
<xsd:element name="acute" type="docCharType" />
<xsd:element name="grave" type="docCharType" />
<xsd:element name="circ" type="docCharType" />
<xsd:element name="slash" type="docCharType" />
<xsd:element name="tilde" type="docCharType" />
<xsd:element name="cedil" type="docCharType" />
<xsd:element name="ring" type="docCharType" />
<xsd:element name="szlig" type="docEmptyType" />
<xsd:element name="nonbreakablespace" type="docEmptyType" />
<xsd:element name="aelig" type="docEmptyType" />
<xsd:element name="AElig" type="docEmptyType" />
<xsd:element name="Gamma" type="docEmptyType" />
<xsd:element name="Delta" type="docEmptyType" />
<xsd:element name="Theta" type="docEmptyType" />
<xsd:element name="Lambda" type="docEmptyType" />
<xsd:element name="Xi" type="docEmptyType" />
<xsd:element name="Pi" type="docEmptyType" />
<xsd:element name="Sigma" type="docEmptyType" />
<xsd:element name="Upsilon" type="docEmptyType" />
<xsd:element name="Phi" type="docEmptyType" />
<xsd:element name="Psi" type="docEmptyType" />
<xsd:element name="Omega" type="docEmptyType" />
<xsd:element name="alpha" type="docEmptyType" />
<xsd:element name="beta" type="docEmptyType" />
<xsd:element name="gamma" type="docEmptyType" />
<xsd:element name="delta" type="docEmptyType" />
<xsd:element name="epsilon" type="docEmptyType" />
<xsd:element name="zeta" type="docEmptyType" />
<xsd:element name="eta" type="docEmptyType" />
<xsd:element name="theta" type="docEmptyType" />
<xsd:element name="iota" type="docEmptyType" />
<xsd:element name="kappa" type="docEmptyType" />
<xsd:element name="lambda" type="docEmptyType" />
<xsd:element name="mu" type="docEmptyType" />
<xsd:element name="nu" type="docEmptyType" />
<xsd:element name="xi" type="docEmptyType" />
<xsd:element name="pi" type="docEmptyType" />
<xsd:element name="rho" type="docEmptyType" />
<xsd:element name="sigma" type="docEmptyType" />
<xsd:element name="tau" type="docEmptyType" />
<xsd:element name="upsilon" type="docEmptyType" />
<xsd:element name="phi" type="docEmptyType" />
<xsd:element name="chi" type="docEmptyType" />
<xsd:element name="psi" type="docEmptyType" />
<xsd:element name="omega" type="docEmptyType" />
<xsd:element name="sigmaf" type="docEmptyType" />
<xsd:element name="sect" type="docEmptyType" />
<xsd:element name="deg" type="docEmptyType" />
<xsd:element name="prime" type="docEmptyType" />
<xsd:element name="Prime" type="docEmptyType" />
<xsd:element name="infin" type="docEmptyType" />
<xsd:element name="empty" type="docEmptyType" />
<xsd:element name="plusmn" type="docEmptyType" />
<xsd:element name="times" type="docEmptyType" />
<xsd:element name="minus" type="docEmptyType" />
<xsd:element name="sdot" type="docEmptyType" />
<xsd:element name="part" type="docEmptyType" />
<xsd:element name="nabla" type="docEmptyType" />
<xsd:element name="radic" type="docEmptyType" />
<xsd:element name="perp" type="docEmptyType" />
<xsd:element name="sum" type="docEmptyType" />
<xsd:element name="int" type="docEmptyType" />
<xsd:element name="prod" type="docEmptyType" />
<xsd:element name="sim" type="docEmptyType" />
<xsd:element name="asymp" type="docEmptyType" />
<xsd:element name="ne" type="docEmptyType" />
<xsd:element name="equiv" type="docEmptyType" />
<xsd:element name="prop" type="docEmptyType" />
<xsd:element name="le" type="docEmptyType" />
<xsd:element name="ge" type="docEmptyType" />
<xsd:element name="larr" type="docEmptyType" />
<xsd:element name="rarr" type="docEmptyType" />
<xsd:element name="isin" type="docEmptyType" />
<xsd:element name="notin" type="docEmptyType" />
<xsd:element name="lceil" type="docEmptyType" />
<xsd:element name="rceil" type="docEmptyType" />
<xsd:element name="lfloor" type="docEmptyType" />
<xsd:element name="rfloor" type="docEmptyType" />
</xsd:choice> </xsd:choice>
</xsd:group> </xsd:group>
...@@ -717,10 +630,6 @@ ...@@ -717,10 +630,6 @@
</xsd:sequence> </xsd:sequence>
</xsd:complexType> </xsd:complexType>
<xsd:complexType name="docCharType">
<xsd:attribute name="char" type="DoxCharRange"/>
</xsd:complexType>
<xsd:complexType name="docEmptyType"/> <xsd:complexType name="docEmptyType"/>
<!-- Simple types --> <!-- Simple types -->
......
...@@ -73,109 +73,14 @@ void DocbookDocVisitor::visit(DocWhiteSpace *w) ...@@ -73,109 +73,14 @@ void DocbookDocVisitor::visit(DocWhiteSpace *w)
void DocbookDocVisitor::visit(DocSymbol *s) void DocbookDocVisitor::visit(DocSymbol *s)
{ {
if (m_hide) return; if (m_hide) return;
switch(s->symbol()) const char *res = get_symbol_docbook(s->symbol());
if (res)
{ {
case DocSymbol::BSlash: m_t << "\\"; break; m_t << res;
case DocSymbol::At: m_t << "@"; break; }
case DocSymbol::Less: m_t << "&lt;"; break; else
case DocSymbol::Greater: m_t << "&gt;"; break; {
case DocSymbol::Amp: m_t << "&amp;"; break; err("DocBook: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol()));
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::Copy: m_t << "&#x00A9;"; break;
case DocSymbol::Tm: m_t << "&#8482;"; break;
case DocSymbol::Reg: m_t << "&#174;"; break;
case DocSymbol::Apos: m_t << "&apos;"; break;
case DocSymbol::Quot: m_t << "&quot;"; break;
case DocSymbol::Lsquo: m_t << "&#8216;"; break;
case DocSymbol::Rsquo: m_t << "&#8217;"; break;
case DocSymbol::Ldquo: m_t << "&#8220;"; break;
case DocSymbol::Rdquo: m_t << "&#8221;"; break;
case DocSymbol::Ndash: m_t << "&#8211;"; break;
case DocSymbol::Mdash: m_t << "&#8212;"; break;
case DocSymbol::Uml: m_t << "&#168;"; break;
case DocSymbol::Acute: m_t << "&#180;"; break;
case DocSymbol::Grave: m_t << "&#192;"; break;
case DocSymbol::Circ: m_t << "&#710;"; break;
case DocSymbol::Tilde: m_t << "&#732;"; break;
case DocSymbol::Szlig: m_t << "&#223;"; break;
case DocSymbol::Cedil: m_t << "&#184;"; break;
case DocSymbol::Ring: m_t << "&#197;"; break;
case DocSymbol::Slash: m_t << "&#216;"; break;
case DocSymbol::Nbsp: m_t << "&#160;"; break;
case DocSymbol::Aelig: m_t << "&#230;"; break;
case DocSymbol::AElig: m_t << "&#198;"; break;
case DocSymbol::GrkGamma: m_t << "&#915;"; break;
case DocSymbol::GrkDelta: m_t << "&#916;"; break;
case DocSymbol::GrkTheta: m_t << "&#920;"; break;
case DocSymbol::GrkLambda: m_t << "&#923;"; break;
case DocSymbol::GrkXi: m_t << "&#926;"; break;
case DocSymbol::GrkPi: m_t << "&#928;"; break;
case DocSymbol::GrkSigma: m_t << "&#931;"; break;
case DocSymbol::GrkUpsilon: m_t << "&#933;"; break;
case DocSymbol::GrkPhi: m_t << "&#934;"; break;
case DocSymbol::GrkPsi: m_t << "&#936;"; break;
case DocSymbol::GrkOmega: m_t << "&#937;"; break;
case DocSymbol::Grkalpha: m_t << "&#945;"; break;
case DocSymbol::Grkbeta: m_t << "&#946;"; break;
case DocSymbol::Grkgamma: m_t << "&#947;"; break;
case DocSymbol::Grkdelta: m_t << "&#948;"; break;
case DocSymbol::Grkepsilon: m_t << "&#949;"; break;
case DocSymbol::Grkzeta: m_t << "&#950;"; break;
case DocSymbol::Grketa: m_t << "&#951;"; break;
case DocSymbol::Grktheta: m_t << "&#952;"; break;
case DocSymbol::Grkiota: m_t << "&#953;"; break;
case DocSymbol::Grkkappa: m_t << "&#954;"; break;
case DocSymbol::Grklambda: m_t << "&#955;"; break;
case DocSymbol::Grkmu: m_t << "&#956;"; break;
case DocSymbol::Grknu: m_t << "&#957;"; break;
case DocSymbol::Grkxi: m_t << "&#958;"; break;
case DocSymbol::Grkpi: m_t << "&#960;"; break;
case DocSymbol::Grkrho: m_t << "&#961;"; break;
case DocSymbol::Grksigma: m_t << "&#963;"; break;
case DocSymbol::Grktau: m_t << "&#964;"; break;
case DocSymbol::Grkupsilon: m_t << "&#965;"; break;
case DocSymbol::Grkphi: m_t << "&#966;"; break;
case DocSymbol::Grkchi: m_t << "&#967;"; break;
case DocSymbol::Grkpsi: m_t << "&#968;"; break;
case DocSymbol::Grkomega: m_t << "&#969;"; break;
case DocSymbol::Grkvarsigma: m_t << "&#962;"; break;
case DocSymbol::Section: m_t << "<simplesect/>"; break;
case DocSymbol::Degree: m_t << "&#176;"; break;
case DocSymbol::Prime: m_t << "&#8242;"; break;
case DocSymbol::DoublePrime: m_t << "&#8243;"; break;
case DocSymbol::Infinity: m_t << "&#8734;"; break;
case DocSymbol::EmptySet: m_t << "&#8709;"; break;
case DocSymbol::PlusMinus: m_t << "&#177;"; break;
case DocSymbol::Times: m_t << "&#215;"; break;
case DocSymbol::Minus: m_t << "&#8722;"; break;
case DocSymbol::CenterDot: m_t << "&#8901;"; break;
case DocSymbol::Partial: m_t << "&#8706;"; break;
case DocSymbol::Nabla: m_t << "&#8711;"; break;
case DocSymbol::SquareRoot: m_t << "&#8730;"; break;
case DocSymbol::Perpendicular: m_t << "&#8869;"; break;
case DocSymbol::Sum: m_t << "&#8721;"; break;
case DocSymbol::Integral: m_t << "&#8747;"; break;
case DocSymbol::Product: m_t << "&#8719;"; break;
case DocSymbol::Similar: m_t << "&#8764;"; break;
case DocSymbol::Approx: m_t << "&#8776;"; break;
case DocSymbol::NotEqual: m_t << "&#8800;"; break;
case DocSymbol::Equivalent: m_t << "&#8801;"; break;
case DocSymbol::Proportional: m_t << "&#8733;"; break;
case DocSymbol::LessEqual: m_t << "&#8804;"; break;
case DocSymbol::GreaterEqual: m_t << "&#8805;"; break;
case DocSymbol::LeftArrow: m_t << "&#8592;"; break;
case DocSymbol::RightArrow: m_t << "&#8594;"; break;
case DocSymbol::SetIn: m_t << "&#8712;"; break;
case DocSymbol::SetNotIn: m_t << "&#8713;"; break;
case DocSymbol::LeftCeil: m_t << "&#8968;"; break;
case DocSymbol::RightCeil: m_t << "&#8969;"; break;
case DocSymbol::LeftFloor: m_t << "&#8970;"; break;
case DocSymbol::RightFloor: m_t << "&#8971;"; break;
default:
err("unknown symbol found\n");
} }
} }
......
This diff is collapsed.
...@@ -336,34 +336,84 @@ class DocStyleChange : public DocNode ...@@ -336,34 +336,84 @@ class DocStyleChange : public DocNode
class DocSymbol : public DocNode class DocSymbol : public DocNode
{ {
public: public:
enum SymType { Unknown=0, BSlash, At, Less, Greater, Amp, Dollar, Hash, enum SymType { Sym_Unknown = -1,
DoubleColon, Percent, Copy, Tm, Reg, Apos, Quot, Uml, Acute, Sym_nbsp, Sym_iexcl, Sym_cent, Sym_pound, Sym_curren,
Grave, Circ, Tilde, Szlig, Cedil, Ring, Nbsp, Slash, Sym_yen, Sym_brvbar, Sym_sect, Sym_uml, Sym_copy,
Lsquo, Rsquo, Ldquo, Rdquo, Ndash, Mdash, Aelig, AElig, Sym_ordf, Sym_laquo, Sym_not, Sym_shy, Sym_reg,
GrkGamma, GrkDelta, GrkTheta, GrkLambda, GrkXi, GrkPi, Sym_macr, Sym_deg, Sym_plusmn, Sym_sup2, Sym_sup3,
GrkSigma, GrkUpsilon, GrkPhi, GrkPsi, GrkOmega, Grkalpha, Sym_acute, Sym_micro, Sym_para, Sym_middot, Sym_cedil,
Grkbeta, Grkgamma, Grkdelta, Grkepsilon, Grkzeta, Grketa, Sym_sup1, Sym_ordm, Sym_raquo, Sym_frac14, Sym_frac12,
Grktheta, Grkiota, Grkkappa, Grklambda, Grkmu, Grknu, Grkxi, Sym_frac34, Sym_iquest, Sym_Agrave, Sym_Aacute, Sym_Acirc,
Grkpi, Grkrho, Grksigma, Grktau, Grkupsilon, Grkphi, Grkchi, Sym_Atilde, Sym_Auml, Sym_Aring, Sym_AElig, Sym_Ccedil,
Grkpsi, Grkomega, Grkvarsigma, Section, Degree, Prime, Sym_Egrave, Sym_Eacute, Sym_Ecirc, Sym_Euml, Sym_Igrave,
DoublePrime, Infinity, EmptySet, PlusMinus, Times, Minus, Sym_Iacute, Sym_Icirc, Sym_Iuml, Sym_ETH, Sym_Ntilde,
CenterDot, Partial, Nabla, SquareRoot, Perpendicular, Sum, Sym_Ograve, Sym_Oacute, Sym_Ocirc, Sym_Otilde, Sym_Ouml,
Integral, Product, Similar, Approx, NotEqual, Equivalent, Sym_times, Sym_Oslash, Sym_Ugrave, Sym_Uacute, Sym_Ucirc,
Proportional, LessEqual, GreaterEqual, LeftArrow, RightArrow, Sym_Uuml, Sym_Yacute, Sym_THORN, Sym_szlig, Sym_agrave,
SetIn, SetNotIn, LeftCeil, RightCeil, LeftFloor, RightFloor, Sym_aacute, Sym_acirc, Sym_atilde, Sym_auml, Sym_aring,
Pipe Sym_aelig, Sym_ccedil, Sym_egrave, Sym_eacute, Sym_ecirc,
Sym_euml, Sym_igrave, Sym_iacute, Sym_icirc, Sym_iuml,
Sym_eth, Sym_ntilde, Sym_ograve, Sym_oacute, Sym_ocirc,
Sym_otilde, Sym_ouml, Sym_divide, Sym_oslash, Sym_ugrave,
Sym_uacute, Sym_ucirc, Sym_uuml, Sym_yacute, Sym_thorn,
Sym_yuml, Sym_fnof, Sym_Alpha, Sym_Beta, Sym_Gamma,
Sym_Delta, Sym_Epsilon, Sym_Zeta, Sym_Eta, Sym_Theta,
Sym_Iota, Sym_Kappa, Sym_Lambda, Sym_Mu, Sym_Nu,
Sym_Xi, Sym_Omicron, Sym_Pi, Sym_Rho, Sym_Sigma,
Sym_Tau, Sym_Upsilon, Sym_Phi, Sym_Chi, Sym_Psi,
Sym_Omega, Sym_alpha, Sym_beta, Sym_gamma, Sym_delta,
Sym_epsilon, Sym_zeta, Sym_eta, Sym_theta, Sym_iota,
Sym_kappa, Sym_lambda, Sym_mu, Sym_nu, Sym_xi,
Sym_omicron, Sym_pi, Sym_rho, Sym_sigmaf, Sym_sigma,
Sym_tau, Sym_upsilon, Sym_phi, Sym_chi, Sym_psi,
Sym_omega, Sym_thetasym, Sym_upsih, Sym_piv, Sym_bull,
Sym_hellip, Sym_prime, Sym_Prime, Sym_oline, Sym_frasl,
Sym_weierp, Sym_image, Sym_real, Sym_trade, Sym_alefsym,
Sym_larr, Sym_uarr, Sym_rarr, Sym_darr, Sym_harr,
Sym_crarr, Sym_lArr, Sym_uArr, Sym_rArr, Sym_dArr,
Sym_hArr, Sym_forall, Sym_part, Sym_exist, Sym_empty,
Sym_nabla, Sym_isin, Sym_notin, Sym_ni, Sym_prod,
Sym_sum, Sym_minus, Sym_lowast, Sym_radic, Sym_prop,
Sym_infin, Sym_ang, Sym_and, Sym_or, Sym_cap,
Sym_cup, Sym_int, Sym_there4, Sym_sim, Sym_cong,
Sym_asymp, Sym_ne, Sym_equiv, Sym_le, Sym_ge,
Sym_sub, Sym_sup, Sym_nsub, Sym_sube, Sym_supe,
Sym_oplus, Sym_otimes, Sym_perp, Sym_sdot, Sym_lceil,
Sym_rceil, Sym_lfloor, Sym_rfloor, Sym_lang, Sym_rang,
Sym_loz, Sym_spades, Sym_clubs, Sym_hearts, Sym_diams,
Sym_quot, Sym_amp, Sym_lt, Sym_gt, Sym_OElig,
Sym_oelig, Sym_Scaron, Sym_scaron, Sym_Yuml, Sym_circ,
Sym_tilde, Sym_ensp, Sym_emsp, Sym_thinsp, Sym_zwnj,
Sym_zwj, Sym_lrm, Sym_rlm, Sym_ndash, Sym_mdash,
Sym_lsquo, Sym_rsquo, Sym_sbquo, Sym_ldquo, Sym_rdquo,
Sym_bdquo, Sym_dagger, Sym_Dagger, Sym_permil, Sym_lsaquo,
Sym_rsaquo, Sym_euro,
/* doxygen extensions */
Sym_tm, Sym_apos,
/* doxygen commands mapped */
Sym_BSlash, Sym_At, Sym_Less, Sym_Greater, Sym_Amp,
Sym_Dollar, Sym_Hash, Sym_DoubleColon, Sym_Percent, Sym_Pipe,
Sym_Quot
}; };
DocSymbol(DocNode *parent,SymType s,char letter='\0') : enum PerlType { Perl_unknown = 0, Perl_string, Perl_char, Perl_symbol, Perl_umlaut,
m_symbol(s), m_letter(letter) { m_parent = parent; } Perl_acute, Perl_grave, Perl_circ, Perl_slash, Perl_tilde,
Perl_cedilla, Perl_ring
};
typedef struct PerlSymb {
const char *symb;
const PerlType type;
}PerlSymb;
DocSymbol(DocNode *parent,SymType s) :
m_symbol(s) { m_parent = parent; }
SymType symbol() const { return m_symbol; } SymType symbol() const { return m_symbol; }
char letter() const { return m_letter; }
Kind kind() const { return Kind_Symbol; } Kind kind() const { return Kind_Symbol; }
void accept(DocVisitor *v) { v->visit(this); } void accept(DocVisitor *v) { v->visit(this); }
static SymType decodeSymbol(const QCString &symName,char *letter); static SymType decodeSymbol(const QCString &symName);
private: private:
SymType m_symbol; SymType m_symbol;
char m_letter;
}; };
/** Node representing some amount of white space */ /** Node representing some amount of white space */
......
...@@ -182,110 +182,14 @@ void HtmlDocVisitor::visit(DocWhiteSpace *w) ...@@ -182,110 +182,14 @@ void HtmlDocVisitor::visit(DocWhiteSpace *w)
void HtmlDocVisitor::visit(DocSymbol *s) void HtmlDocVisitor::visit(DocSymbol *s)
{ {
if (m_hide) return; if (m_hide) return;
switch(s->symbol()) const char *res = get_symbol_html(s->symbol());
{ if (res)
case DocSymbol::BSlash: m_t << "\\"; break; {
case DocSymbol::At: m_t << "@"; break; m_t << res;
case DocSymbol::Less: m_t << "&lt;"; break; }
case DocSymbol::Greater: m_t << "&gt;"; break; else
case DocSymbol::Amp: m_t << "&amp;"; break; {
case DocSymbol::Dollar: m_t << "$"; break; err("HTML: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol()));
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 << "&trade;"; break;
case DocSymbol::Reg: m_t << "&reg;"; 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 << "&" << s->letter() << "uml;"; break;
case DocSymbol::Acute: m_t << "&" << s->letter() << "acute;"; break;
case DocSymbol::Grave: m_t << "&" << s->letter() << "grave;"; break;
case DocSymbol::Circ: m_t << "&" << s->letter() << "circ;"; break;
case DocSymbol::Slash: m_t << "&" << s->letter() << "slash;"; break;
case DocSymbol::Tilde: m_t << "&" << s->letter() << "tilde;"; break;
case DocSymbol::Szlig: m_t << "&szlig;"; break;
case DocSymbol::Cedil: m_t << "&" << s->letter() << "cedil;"; break;
case DocSymbol::Ring: m_t << "&" << s->letter() << "ring;"; break;
case DocSymbol::Nbsp: m_t << "&#160;"; 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");
} }
} }
......
...@@ -135,135 +135,25 @@ void LatexDocVisitor::visit(DocWhiteSpace *w) ...@@ -135,135 +135,25 @@ void LatexDocVisitor::visit(DocWhiteSpace *w)
void LatexDocVisitor::visit(DocSymbol *s) void LatexDocVisitor::visit(DocSymbol *s)
{ {
if (m_hide) return; if (m_hide) return;
switch(s->symbol()) const char *res = get_symbol_latex(s->symbol());
{ if (res)
case DocSymbol::BSlash: m_t << "\\textbackslash{}"; break; {
case DocSymbol::At: m_t << "@"; break; if (((s->symbol() == DocSymbol::Sym_lt) || (s->symbol() == DocSymbol::Sym_Less))&& (!m_insidePre))
case DocSymbol::Less: if (m_insidePre) m_t << "<"; else m_t << "$<$"; {
break; m_t << "$<$";
case DocSymbol::Greater: if (m_insidePre) m_t << ">"; else m_t << "$>$"; break; }
case DocSymbol::Amp: m_t << "\\&"; break; else if (((s->symbol() == DocSymbol::Sym_gt) || (s->symbol() == DocSymbol::Sym_Greater)) && (!m_insidePre))
case DocSymbol::Dollar: m_t << "\\$"; break; {
case DocSymbol::Hash: m_t << "\\#"; break; m_t << "$>$";
case DocSymbol::DoubleColon: m_t << "::"; break; }
case DocSymbol::Percent: m_t << "\\%"; break; else
case DocSymbol::Pipe: m_t << "$|$"; break; {
case DocSymbol::Copy: m_t << "\\copyright{}"; break; m_t << res;
case DocSymbol::Tm: m_t << "\\texttrademark{}"; break; }
case DocSymbol::Reg: m_t << "\\textregistered{}"; break; }
case DocSymbol::Apos: m_t << "'"; break; else
case DocSymbol::Quot: m_t << "\""; break; {
case DocSymbol::Lsquo: m_t << "`"; break; err("LaTeX: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol()));
case DocSymbol::Rsquo: m_t << "'"; break;
case DocSymbol::Ldquo: m_t << "``"; break;
case DocSymbol::Rdquo: m_t << "''"; break;
case DocSymbol::Ndash: m_t << "--"; break;
case DocSymbol::Mdash: m_t << "---"; break;
case DocSymbol::Uml:
if (s->letter()=='i')
m_t << "\\\"{\\i}";
else
m_t << "\\\"{" << s->letter() << "}";
break;
case DocSymbol::Acute:
if (s->letter()=='i')
m_t << "\\'{\\i}";
else
m_t << "\\'{" << s->letter() << "}";
break;
case DocSymbol::Grave:
if (s->letter()=='i')
m_t << "\\`{\\i}";
else
m_t << "\\`{" << s->letter() << "}";
break;
case DocSymbol::Circ:
if (s->letter()=='i')
m_t << "\\^{\\i}";
else
m_t << "\\^{" << s->letter() << "}";
break;
case DocSymbol::Slash: if (tolower(s->letter())=='o')
m_t << "{\\" << s->letter() << "}";
else
m_t << s->letter();
break;
case DocSymbol::Tilde: m_t << "\\~{" << s->letter() << "}"; break;
case DocSymbol::Szlig: m_t << "{\\ss}"; break;
case DocSymbol::Cedil: m_t << "\\c{" << s->letter() << "}"; break;
case DocSymbol::Ring: m_t << "\\" << s->letter() << s->letter(); break;
case DocSymbol::Nbsp: m_t << "~"; break;
case DocSymbol::AElig: m_t << "{\\AE}"; break;
case DocSymbol::Aelig: m_t << "{\\ae}"; 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 << "{$\\varepsilon$}"; 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 << "{$\\varphi$}"; 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 << "{$\\varsigma$}"; break;
case DocSymbol::Section: m_t << "{$\\S$}"; break;
case DocSymbol::Degree: m_t << "\\textdegree"; break;
case DocSymbol::Prime: m_t << "'"; break;
case DocSymbol::DoublePrime: m_t << "''"; break;
case DocSymbol::Infinity: m_t << "{$\\infty$}"; break;
case DocSymbol::EmptySet: m_t << "{$\\emptyset$}"; break;
case DocSymbol::PlusMinus: m_t << "{$\\pm$}"; break;
case DocSymbol::Times: m_t << "{$\\times$}"; break;
case DocSymbol::Minus: m_t << "-"; break;
case DocSymbol::CenterDot: m_t << "{$\\cdot$}"; break;
case DocSymbol::Partial: m_t << "{$\\partial$}"; break;
case DocSymbol::Nabla: m_t << "{$\\nabla$}"; break;
case DocSymbol::SquareRoot: m_t << "{$\\surd$}"; 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 << "{$\\approx$}"; break;
case DocSymbol::NotEqual: m_t << "{$\\ne$}"; break;
case DocSymbol::Equivalent: m_t << "{$\\equiv$}"; break;
case DocSymbol::Proportional: m_t << "{$\\propto$}"; break;
case DocSymbol::LessEqual: m_t << "{$\\le$}"; break;
case DocSymbol::GreaterEqual: m_t << "{$\\ge$}"; break;
case DocSymbol::LeftArrow: m_t << "{$\\leftarrow$}"; break;
case DocSymbol::RightArrow: m_t << "{$\\rightarrow$}"; break;
case DocSymbol::SetIn: m_t << "{$\\in$}"; 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");
} }
} }
......
...@@ -293,7 +293,9 @@ static void writeDefaultHeaderPart1(FTextStream &t) ...@@ -293,7 +293,9 @@ static void writeDefaultHeaderPart1(FTextStream &t)
"\\usepackage{makeidx}\n" "\\usepackage{makeidx}\n"
"\\usepackage{multicol}\n" "\\usepackage{multicol}\n"
"\\usepackage{multirow}\n" "\\usepackage{multirow}\n"
"\\PassOptionsToPackage{warn}{textcomp}\n"
"\\usepackage{textcomp}\n" "\\usepackage{textcomp}\n"
"\\usepackage[nointegrals]{wasysym}\n"
"\\usepackage[table]{xcolor}\n" "\\usepackage[table]{xcolor}\n"
"\n"; "\n";
......
...@@ -75,42 +75,15 @@ void ManDocVisitor::visit(DocWhiteSpace *w) ...@@ -75,42 +75,15 @@ void ManDocVisitor::visit(DocWhiteSpace *w)
void ManDocVisitor::visit(DocSymbol *s) void ManDocVisitor::visit(DocSymbol *s)
{ {
if (m_hide) return; if (m_hide) return;
switch(s->symbol()) const char *res = get_symbol_man(s->symbol());
if (res)
{ {
case DocSymbol::BSlash: m_t << "\\\\"; break; m_t << res;
case DocSymbol::At: m_t << "@"; break; }
case DocSymbol::Less: m_t << "<"; break; else
case DocSymbol::Greater: m_t << ">"; break; {
case DocSymbol::Amp: m_t << "&"; break; // no error or warning to be supplied
case DocSymbol::Dollar: m_t << "$"; break; // err("man: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol()));
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 << "(C)"; break;
case DocSymbol::Tm: m_t << "(TM)"; break;
case DocSymbol::Reg: m_t << "(R)"; break;
case DocSymbol::Apos: m_t << "'"; break;
case DocSymbol::Quot: m_t << "\""; break;
case DocSymbol::Lsquo: m_t << "`"; break;
case DocSymbol::Rsquo: m_t << "'"; break;
case DocSymbol::Ldquo: m_t << "``"; break;
case DocSymbol::Rdquo: m_t << "''"; break;
case DocSymbol::Ndash: m_t << "--"; break;
case DocSymbol::Mdash: m_t << "---"; break;
case DocSymbol::Uml: m_t << s->letter() << "\\*(4"; break;
case DocSymbol::Acute: m_t << s->letter() << "\\*(`"; break;
case DocSymbol::Grave: m_t << s->letter() << "\\*:"; break;
case DocSymbol::Circ: m_t << s->letter() << "\\*^"; break;
case DocSymbol::Slash: m_t << s->letter(); break; /* todo: implement this */
case DocSymbol::Tilde: m_t << s->letter() << "\\*~"; break;
case DocSymbol::Szlig: m_t << "s\\*:"; break;
case DocSymbol::Cedil: m_t << s->letter() << "\\*,"; break;
case DocSymbol::Ring: m_t << s->letter() << "\\*o"; break;
case DocSymbol::Nbsp: m_t << " "; break;
default:
// unsupport symbol for man page :-(
break;
} }
m_firstCol=FALSE; m_firstCol=FALSE;
} }
......
...@@ -41,6 +41,7 @@ ...@@ -41,6 +41,7 @@
#include "namespacedef.h" #include "namespacedef.h"
#include "membergroup.h" #include "membergroup.h"
#include "section.h" #include "section.h"
#include "util.h"
#define PERLOUTPUT_MAX_INDENTATION 40 #define PERLOUTPUT_MAX_INDENTATION 40
...@@ -540,140 +541,66 @@ void PerlModDocVisitor::visit(DocWhiteSpace *) ...@@ -540,140 +541,66 @@ void PerlModDocVisitor::visit(DocWhiteSpace *)
void PerlModDocVisitor::visit(DocSymbol *sy) void PerlModDocVisitor::visit(DocSymbol *sy)
{ {
char c = 0; const DocSymbol::PerlSymb *res = get_symbol_perl(sy->symbol());
const char *s = 0; const char *accent;
const char *accent = 0; if (res-> symb)
const char *symbol = 0;
switch(sy->symbol())
{ {
case DocSymbol::At: c = '@'; break; switch (res->type)
case DocSymbol::Less: c = '<'; break; {
case DocSymbol::Greater: c = '>'; break; case DocSymbol::Perl_string:
case DocSymbol::Amp: c = '&'; break; enterText();
case DocSymbol::Dollar: c = '$'; break; m_output.add(res->symb);
case DocSymbol::Hash: c = '#'; break; break;
case DocSymbol::DoubleColon: s = "::"; break; case DocSymbol::Perl_char:
case DocSymbol::Percent: c = '%'; break; enterText();
case DocSymbol::Pipe: c = '|'; break; m_output.add(res->symb[0]);
case DocSymbol::Quot: c = '"'; break; break;
case DocSymbol::Lsquo: s = "\\\'"; break; case DocSymbol::Perl_symbol:
case DocSymbol::Rsquo: s = "\\\'"; break; leaveText();
case DocSymbol::Ldquo: c = '"'; break; openItem("symbol");
case DocSymbol::Rdquo: c = '"'; break; m_output.addFieldQuotedString("symbol", res->symb);
case DocSymbol::Ndash: c = '-'; break; closeItem();
case DocSymbol::Mdash: s = "--"; break; break;
case DocSymbol::Nbsp: c = ' '; break; default:
case DocSymbol::Uml: accent = "umlaut"; break; switch(res->type)
case DocSymbol::Acute: accent = "acute"; break; {
case DocSymbol::Grave: accent = "grave"; break; case DocSymbol::Perl_umlaut:
case DocSymbol::Circ: accent = "circ"; break; accent = "umlaut";
case DocSymbol::Slash: accent = "slash"; break; break;
case DocSymbol::Tilde: accent = "tilde"; break; case DocSymbol::Perl_acute:
case DocSymbol::Cedil: accent = "cedilla"; break; accent = "acute";
case DocSymbol::Ring: accent = "ring"; break; break;
case DocSymbol::BSlash: s = "\\\\"; break; case DocSymbol::Perl_grave:
case DocSymbol::Copy: symbol = "copyright"; break; accent = "grave";
case DocSymbol::Tm: symbol = "trademark"; break; break;
case DocSymbol::Reg: symbol = "registered"; break; case DocSymbol::Perl_circ:
case DocSymbol::Szlig: symbol = "szlig"; break; accent = "circ";
case DocSymbol::Apos: s = "\\\'"; break; break;
case DocSymbol::Aelig: symbol = "aelig"; break; case DocSymbol::Perl_slash:
case DocSymbol::AElig: symbol = "AElig"; break; accent = "slash";
case DocSymbol::GrkGamma: symbol = "Gamma"; break; break;
case DocSymbol::GrkDelta: symbol = "Delta"; break; case DocSymbol::Perl_tilde:
case DocSymbol::GrkTheta: symbol = "Theta"; break; accent = "tilde";
case DocSymbol::GrkLambda: symbol = "Lambda"; break; break;
case DocSymbol::GrkXi: symbol = "Xi"; break; case DocSymbol::Perl_cedilla:
case DocSymbol::GrkPi: symbol = "Pi"; break; accent = "cedilla";
case DocSymbol::GrkSigma: symbol = "Sigma"; break; break;
case DocSymbol::GrkUpsilon: symbol = "Upsilon"; break; case DocSymbol::Perl_ring:
case DocSymbol::GrkPhi: symbol = "Phi"; break; accent = "ring";
case DocSymbol::GrkPsi: symbol = "Psi"; break; break;
case DocSymbol::GrkOmega: symbol = "Omega"; break; }
case DocSymbol::Grkalpha: symbol = "alpha"; break; leaveText();
case DocSymbol::Grkbeta: symbol = "beta"; break; openItem("accent");
case DocSymbol::Grkgamma: symbol = "gamma"; break; m_output
case DocSymbol::Grkdelta: symbol = "delta"; break; .addFieldQuotedString("accent", accent)
case DocSymbol::Grkepsilon: symbol = "epsilon"; break; .addFieldQuotedChar("letter", res->symb[0]);
case DocSymbol::Grkzeta: symbol = "zeta"; break; closeItem();
case DocSymbol::Grketa: symbol = "eta"; break; break;
case DocSymbol::Grktheta: symbol = "theta"; break; }
case DocSymbol::Grkiota: symbol = "iota"; break; }
case DocSymbol::Grkkappa: symbol = "kappa"; break; else
case DocSymbol::Grklambda: symbol = "lambda"; break;
case DocSymbol::Grkmu: symbol = "mu"; break;
case DocSymbol::Grknu: symbol = "nu"; break;
case DocSymbol::Grkxi: symbol = "xi"; break;
case DocSymbol::Grkpi: symbol = "pi"; break;
case DocSymbol::Grkrho: symbol = "rho"; break;
case DocSymbol::Grksigma: symbol = "sigma"; break;
case DocSymbol::Grktau: symbol = "tau"; break;
case DocSymbol::Grkupsilon: symbol = "upsilon"; break;
case DocSymbol::Grkphi: symbol = "phi"; break;
case DocSymbol::Grkchi: symbol = "chi"; break;
case DocSymbol::Grkpsi: symbol = "psi"; break;
case DocSymbol::Grkomega: symbol = "omega"; break;
case DocSymbol::Grkvarsigma: symbol = "sigma"; break;
case DocSymbol::Section: symbol = "sect"; break;
case DocSymbol::Degree: symbol = "deg"; break;
case DocSymbol::Prime: s = "\\\'"; break;
case DocSymbol::DoublePrime: c = '"'; break;
case DocSymbol::Infinity: symbol = "inf"; break;
case DocSymbol::EmptySet: symbol = "empty"; break;
case DocSymbol::PlusMinus: s = "+/-"; break;
case DocSymbol::Times: c = '*'; break;
case DocSymbol::Minus: c = '-'; break;
case DocSymbol::CenterDot: c = '.'; break;
case DocSymbol::Partial: symbol = "partial"; break;
case DocSymbol::Nabla: symbol = "nabla"; break;
case DocSymbol::SquareRoot: symbol = "sqrt"; break;
case DocSymbol::Perpendicular: symbol = "perp"; break;
case DocSymbol::Sum: symbol = "sum"; break;
case DocSymbol::Integral: symbol = "int"; break;
case DocSymbol::Product: symbol = "prod"; break;
case DocSymbol::Similar: c = '~'; break;
case DocSymbol::Approx: symbol = "approx"; break;
case DocSymbol::NotEqual: s = "!="; break;
case DocSymbol::Equivalent: symbol = "equiv"; break;
case DocSymbol::Proportional: symbol = "propto"; break;
case DocSymbol::LessEqual: s = "<="; break;
case DocSymbol::GreaterEqual: s = ">="; break;
case DocSymbol::LeftArrow: s = "<-"; break;
case DocSymbol::RightArrow: s = "->"; break;
case DocSymbol::SetIn: symbol = "in"; break;
case DocSymbol::SetNotIn: symbol = "notin"; break;
case DocSymbol::LeftCeil: symbol = "lceil"; break;
case DocSymbol::RightCeil: symbol = "rceil"; break;
case DocSymbol::LeftFloor: symbol = "lfloor"; break;
case DocSymbol::RightFloor: symbol = "rfloor"; break;
case DocSymbol::Unknown: err("unknown symbol found\n");
break;
}
if (c != 0)
{
enterText();
m_output.add(c);
}
else if (s != 0)
{
enterText();
m_output.add(s);
}
else if (symbol != 0)
{
leaveText();
openItem("symbol");
m_output.addFieldQuotedString("symbol", symbol);
closeItem();
}
else if (accent != 0)
{ {
leaveText(); err("perl: non supported HTML-entity found: &%s;\n",get_symbol_item(sy->symbol()));
openItem("accent");
m_output
.addFieldQuotedString("accent", accent)
.addFieldQuotedChar("letter", sy->letter());
closeItem();
} }
} }
......
...@@ -56,106 +56,14 @@ class PrintDocVisitor : public DocVisitor ...@@ -56,106 +56,14 @@ class PrintDocVisitor : public DocVisitor
void visit(DocSymbol *s) void visit(DocSymbol *s)
{ {
indent_leaf(); indent_leaf();
switch(s->symbol()) const char *res = get_symbol_print(s->symbol());
if (res)
{ {
case DocSymbol::BSlash: printf("\\"); break; printf("%s",res);
case DocSymbol::At: printf("@"); break; }
case DocSymbol::Less: printf("<"); break; else
case DocSymbol::Greater: printf(">"); break; {
case DocSymbol::Amp: printf("&"); break; printf("print: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol()));
case DocSymbol::Dollar: printf("$"); break;
case DocSymbol::Hash: printf("#"); break;
case DocSymbol::Percent: printf("%%"); break;
case DocSymbol::Pipe: printf("|"); break;
case DocSymbol::Copy: printf("&copy;"); break;
case DocSymbol::Apos: printf("'"); break;
case DocSymbol::Quot: printf("\""); break;
case DocSymbol::Lsquo: printf("&lsquo;"); break;
case DocSymbol::Rsquo: printf("&rsquo;"); break;
case DocSymbol::Ldquo: printf("&ldquo;"); break;
case DocSymbol::Rdquo: printf("&rdquo;"); break;
case DocSymbol::Ndash: printf("&ndash;"); break;
case DocSymbol::Mdash: printf("&mdash;"); break;
case DocSymbol::Uml: printf("&%cuml;",s->letter()); break;
case DocSymbol::Acute: printf("&%cacute;",s->letter()); break;
case DocSymbol::Grave: printf("&%cgrave;",s->letter()); break;
case DocSymbol::Circ: printf("&%ccirc;",s->letter()); break;
case DocSymbol::Tilde: printf("&%ctilde;",s->letter()); break;
case DocSymbol::Szlig: printf("&szlig;"); break;
case DocSymbol::Cedil: printf("&%ccedul;",s->letter()); break;
case DocSymbol::Ring: printf("&%cring;",s->letter()); break;
case DocSymbol::Nbsp: printf("&nbsp;"); break;
case DocSymbol::Aelig: printf("&aelig;"); break;
case DocSymbol::AElig: printf("&AElig;"); break;
case DocSymbol::GrkGamma: printf("&Gamma;"); break;
case DocSymbol::GrkDelta: printf("&Delta;"); break;
case DocSymbol::GrkTheta: printf("&Theta;"); break;
case DocSymbol::GrkLambda: printf("&Lambda;"); break;
case DocSymbol::GrkXi: printf("&Xi;"); break;
case DocSymbol::GrkPi: printf("&Pi;"); break;
case DocSymbol::GrkSigma: printf("&Sigma;"); break;
case DocSymbol::GrkUpsilon: printf("&Upsilon;"); break;
case DocSymbol::GrkPhi: printf("&Phi;"); break;
case DocSymbol::GrkPsi: printf("&Psi;"); break;
case DocSymbol::GrkOmega: printf("&Omega;"); break;
case DocSymbol::Grkalpha: printf("&alpha;"); break;
case DocSymbol::Grkbeta: printf("&beta;"); break;
case DocSymbol::Grkgamma: printf("&gamma;"); break;
case DocSymbol::Grkdelta: printf("&delta;"); break;
case DocSymbol::Grkepsilon: printf("&epsilon;"); break;
case DocSymbol::Grkzeta: printf("&zeta;"); break;
case DocSymbol::Grketa: printf("&eta;"); break;
case DocSymbol::Grktheta: printf("&theta;"); break;
case DocSymbol::Grkiota: printf("&iota;"); break;
case DocSymbol::Grkkappa: printf("&kappa;"); break;
case DocSymbol::Grklambda: printf("&lambda;"); break;
case DocSymbol::Grkmu: printf("&mu;"); break;
case DocSymbol::Grknu: printf("&nu;"); break;
case DocSymbol::Grkxi: printf("&xi;"); break;
case DocSymbol::Grkpi: printf("&pi;"); break;
case DocSymbol::Grkrho: printf("&rho;"); break;
case DocSymbol::Grksigma: printf("&sigma;"); break;
case DocSymbol::Grktau: printf("&tau;"); break;
case DocSymbol::Grkupsilon: printf("&upsilon;"); break;
case DocSymbol::Grkphi: printf("&phi;"); break;
case DocSymbol::Grkchi: printf("&chi;"); break;
case DocSymbol::Grkpsi: printf("&psi;"); break;
case DocSymbol::Grkomega: printf("&omega;"); break;
case DocSymbol::Grkvarsigma: printf("&sigmaf;"); break;
case DocSymbol::Section: printf("&sect;"); break;
case DocSymbol::Degree: printf("&deg;"); break;
case DocSymbol::Prime: printf("&prime;"); break;
case DocSymbol::DoublePrime: printf("&Prime;"); break;
case DocSymbol::Infinity: printf("&infin;"); break;
case DocSymbol::EmptySet: printf("&empty;"); break;
case DocSymbol::PlusMinus: printf("&plusmn;"); break;
case DocSymbol::Times: printf("&times;"); break;
case DocSymbol::Minus: printf("&minus;"); break;
case DocSymbol::CenterDot: printf("&sdot;"); break;
case DocSymbol::Partial: printf("&part;"); break;
case DocSymbol::Nabla: printf("&nabla;"); break;
case DocSymbol::SquareRoot: printf("&radic;"); break;
case DocSymbol::Perpendicular: printf("&perp;"); break;
case DocSymbol::Sum: printf("&sum;"); break;
case DocSymbol::Integral: printf("&int;"); break;
case DocSymbol::Product: printf("&prod;"); break;
case DocSymbol::Similar: printf("&sim;"); break;
case DocSymbol::Approx: printf("&asymp;"); break;
case DocSymbol::NotEqual: printf("&ne;"); break;
case DocSymbol::Equivalent: printf("&equiv;"); break;
case DocSymbol::Proportional: printf("&prop;"); break;
case DocSymbol::LessEqual: printf("&le;"); break;
case DocSymbol::GreaterEqual: printf("&ge;"); break;
case DocSymbol::LeftArrow: printf("&larr;"); break;
case DocSymbol::RightArrow: printf("&rarr;"); break;
case DocSymbol::SetIn: printf("&isin;"); break;
case DocSymbol::SetNotIn: printf("&notin;"); break;
case DocSymbol::LeftCeil: printf("&lceil;"); break;
case DocSymbol::RightCeil: printf("&rceil;"); break;
case DocSymbol::LeftFloor: printf("&lfloor;"); break;
case DocSymbol::RightFloor: printf("&rfloor;"); break;
default:
printf("unknown symbol found\n");
} }
} }
void visit(DocURL *u) void visit(DocURL *u)
......
This diff is collapsed.
...@@ -19,115 +19,20 @@ ...@@ -19,115 +19,20 @@
#include <qdir.h> #include <qdir.h>
#include "textdocvisitor.h" #include "textdocvisitor.h"
#include "message.h" #include "message.h"
#include "util.h"
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
void TextDocVisitor::visit(DocSymbol *s) void TextDocVisitor::visit(DocSymbol *s)
{ {
switch(s->symbol()) const char *res = get_symbol_text(s->symbol());
if (res)
{ {
case DocSymbol::BSlash: m_t << "\\"; break; m_t << res;
case DocSymbol::At: m_t << "@"; break; }
case DocSymbol::Less: m_t << "&lt;"; break; else
case DocSymbol::Greater: m_t << "&gt;"; break; {
case DocSymbol::Amp: m_t << "&amp;"; break; err("text: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol()));
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 << "&tm;"; break;
case DocSymbol::Reg: m_t << "&reg;"; 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 << "&" << s->letter() << "uml;"; break;
case DocSymbol::Acute: m_t << "&" << s->letter() << "acute;"; break;
case DocSymbol::Grave: m_t << "&" << s->letter() << "grave;"; break;
case DocSymbol::Circ: m_t << "&" << s->letter() << "circ;"; break;
case DocSymbol::Slash: m_t << "&" << s->letter() << "slash;"; break;
case DocSymbol::Tilde: m_t << "&" << s->letter() << "tilde;"; break;
case DocSymbol::Szlig: m_t << "&szlig;"; break;
case DocSymbol::Cedil: m_t << "&" << s->letter() << "cedil;"; break;
case DocSymbol::Ring: m_t << "&" << s->letter() << "ring;"; break;
case DocSymbol::Nbsp: m_t << "&nbsp;"; 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");
} }
} }
......
This diff is collapsed.
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include <ctype.h> #include <ctype.h>
#include "types.h" #include "types.h"
#include "sortdict.h" #include "sortdict.h"
#include "docparser.h"
//-------------------------------------------------------------------- //--------------------------------------------------------------------
...@@ -454,5 +455,19 @@ void convertProtectionLevel( ...@@ -454,5 +455,19 @@ void convertProtectionLevel(
int *outListType2 int *outListType2
); );
DocSymbol::SymType code_symbol(const QCString &symName);
const char *get_symbol_item(DocSymbol::SymType symb);
const char *get_symbol_UTF8(DocSymbol::SymType symb);
const char *get_symbol_html(DocSymbol::SymType symb);
const char *get_symbol_print(DocSymbol::SymType symb);
const char *get_symbol_text(DocSymbol::SymType symb);
const char *get_symbol_xml(DocSymbol::SymType symb);
const char *get_symbol_docbook(DocSymbol::SymType symb);
const char *get_symbol_latex(DocSymbol::SymType symb);
const char *get_symbol_man(DocSymbol::SymType symb);
const char *get_symbol_rtf(DocSymbol::SymType symb);
const DocSymbol::PerlSymb *get_symbol_perl(DocSymbol::SymType symb);
int get_num_standard_symbols(void);
void validate_html_entities(void);
#endif #endif
...@@ -70,110 +70,14 @@ void XmlDocVisitor::visit(DocWhiteSpace *w) ...@@ -70,110 +70,14 @@ void XmlDocVisitor::visit(DocWhiteSpace *w)
void XmlDocVisitor::visit(DocSymbol *s) void XmlDocVisitor::visit(DocSymbol *s)
{ {
if (m_hide) return; if (m_hide) return;
switch(s->symbol()) const char *res = get_symbol_xml(s->symbol());
if (res)
{ {
case DocSymbol::BSlash: m_t << "\\"; break; m_t << res;
case DocSymbol::At: m_t << "@"; break; }
case DocSymbol::Less: m_t << "&lt;"; break; else
case DocSymbol::Greater: m_t << "&gt;"; break; {
case DocSymbol::Amp: m_t << "&amp;"; break; err("XML: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol()));
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");
} }
} }
......
...@@ -1897,7 +1897,48 @@ void generateXML() ...@@ -1897,7 +1897,48 @@ void generateXML()
err("Cannot open file %s for writing!\n",fileName.data()); err("Cannot open file %s for writing!\n",fileName.data());
return; return;
} }
f.writeBlock(compound_xsd,qstrlen(compound_xsd)); /*
* If the compound_xsd contyains the special string
* write part till special string
* for each html entity
* write xsd entry with xml element name without enclosing < and />
* write part after special string
* otherwise
* write original compound_xsd
*/
QCString cmp_org(compound_xsd);
QCString ins("<!-- Automatically insert here the HTML entities -->");
if (cmp_org.contains(QRegExp(ins)))
{
QCString xsd_txt;
QCString xsd_tmp;
QCString cmp_tmp1;
QCString cmp_tmp2;
QRegExp beg("^<");
QRegExp end("/>$");
cmp_tmp1 = cmp_org;
cmp_tmp1 = cmp_tmp1.replace(QRegExp(" *"+ins+".*"),"");
f.writeBlock(cmp_tmp1,qstrlen(cmp_tmp1));
int num_std = get_num_standard_symbols();
for (int i = 0; i < num_std; i++)
{
xsd_tmp = QCString(get_symbol_xml((DocSymbol::SymType)i));
if (xsd_tmp.contains(beg))
{
xsd_txt = " <xsd:element name=\"";
xsd_txt += xsd_tmp.replace(beg,"").replace(end,"");
xsd_txt += "\" type=\"docEmptyType\" />\n";
f.writeBlock(xsd_txt,qstrlen(xsd_txt));
}
}
cmp_tmp2 = cmp_org;
cmp_tmp2 = cmp_tmp2.replace(QRegExp(".*"+ins),"");
f.writeBlock(cmp_tmp2,qstrlen(cmp_tmp2));
}
else
{
f.writeBlock(compound_xsd,qstrlen(compound_xsd));
}
f.close(); f.close();
fileName=outputDirectory+"/index.xml"; fileName=outputDirectory+"/index.xml";
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment