fixed leading spaces for the second row of table in pydoc, sources formatted
This commit is contained in:
parent
9cd379b800
commit
3b7908fa6e
6 changed files with 639 additions and 452 deletions
|
|
@ -19,13 +19,13 @@
|
|||
#include <iostream>
|
||||
|
||||
// define static tables, they are filled in PyDocConverter's constructor
|
||||
std::map<std::string, std::pair<PyDocConverter::tagHandler, std::string > > PyDocConverter::tagHandlers;
|
||||
std::map<std::string, std::pair<PyDocConverter::tagHandler, std::string> > PyDocConverter::tagHandlers;
|
||||
std::map<std::string, std::string> PyDocConverter::sectionTitles;
|
||||
|
||||
using std::string;
|
||||
|
||||
|
||||
void PyDocConverter::fillStaticTables() {
|
||||
void PyDocConverter::fillStaticTables()
|
||||
{
|
||||
if (tagHandlers.size()) // fill only once
|
||||
return;
|
||||
|
||||
|
|
@ -94,15 +94,18 @@ void PyDocConverter::fillStaticTables() {
|
|||
tagHandlers["manonly"] = make_pair(&PyDocConverter::handleParagraph, "");
|
||||
tagHandlers["note"] = make_pair(&PyDocConverter::handleParagraph, "");
|
||||
tagHandlers["p"] = make_pair(&PyDocConverter::handleParagraph, "");
|
||||
tagHandlers["partofdescription"] = make_pair(&PyDocConverter::handleParagraph, "");
|
||||
tagHandlers["partofdescription"] = make_pair(&PyDocConverter::handleParagraph,
|
||||
"");
|
||||
tagHandlers["rtfonly"] = make_pair(&PyDocConverter::handleParagraph, "");
|
||||
tagHandlers["return"] = make_pair(&PyDocConverter::handleParagraph, "");
|
||||
tagHandlers["returns"] = make_pair(&PyDocConverter::handleParagraph, "");
|
||||
tagHandlers["result"] = make_pair(&PyDocConverter::handleParagraph, "");
|
||||
tagHandlers["remark"] = make_pair(&PyDocConverter::handleParagraph, "");
|
||||
tagHandlers["remarks"] = make_pair(&PyDocConverter::handleParagraph, "");
|
||||
tagHandlers["sa"] = make_pair(&PyDocConverter::handleTagMessage, "See also: ");
|
||||
tagHandlers["see"] = make_pair(&PyDocConverter::handleTagMessage, "See also: ");
|
||||
tagHandlers["sa"] = make_pair(&PyDocConverter::handleTagMessage,
|
||||
"See also: ");
|
||||
tagHandlers["see"] = make_pair(&PyDocConverter::handleTagMessage,
|
||||
"See also: ");
|
||||
tagHandlers["since"] = make_pair(&PyDocConverter::handleParagraph, "");
|
||||
tagHandlers["short"] = make_pair(&PyDocConverter::handleParagraph, "");
|
||||
tagHandlers["throw"] = make_pair(&PyDocConverter::handleParagraph, "");
|
||||
|
|
@ -114,23 +117,27 @@ void PyDocConverter::fillStaticTables() {
|
|||
tagHandlers["xmlonly"] = make_pair(&PyDocConverter::handleParagraph, "");
|
||||
// these commands have special handlers
|
||||
tagHandlers["arg"] = make_pair(&PyDocConverter::handleTagMessage, " -");
|
||||
tagHandlers["cond"] = make_pair(&PyDocConverter::handleTagMessage, "Conditional comment: ");
|
||||
tagHandlers["cond"] = make_pair(&PyDocConverter::handleTagMessage,
|
||||
"Conditional comment: ");
|
||||
tagHandlers["else"] = make_pair(&PyDocConverter::handleTagIf, "Else: ");
|
||||
tagHandlers["elseif"] = make_pair(&PyDocConverter::handleTagIf, "Else if: ");
|
||||
tagHandlers["endcond"] = make_pair(&PyDocConverter::handleTagMessage, "End of conditional comment.");
|
||||
tagHandlers["endcond"] = make_pair(&PyDocConverter::handleTagMessage,
|
||||
"End of conditional comment.");
|
||||
tagHandlers["if"] = make_pair(&PyDocConverter::handleTagIf, "If: ");
|
||||
tagHandlers["ifnot"] = make_pair(&PyDocConverter::handleTagIf, "If not: ");
|
||||
tagHandlers["image"] = make_pair(&PyDocConverter::handleTagImage, "");
|
||||
tagHandlers["li"] = make_pair(&PyDocConverter::handleTagMessage, " -");
|
||||
tagHandlers["overload"] = make_pair(&PyDocConverter::handleTagMessage, "This is an overloaded member function, provided for"
|
||||
" convenience.\nIt differs from the above function only in what"
|
||||
" argument(s) it accepts.");
|
||||
tagHandlers["overload"] = make_pair(&PyDocConverter::handleTagMessage,
|
||||
"This is an overloaded member function, provided for"
|
||||
" convenience.\nIt differs from the above function only in what"
|
||||
" argument(s) it accepts.");
|
||||
tagHandlers["par"] = make_pair(&PyDocConverter::handleTagPar, "");
|
||||
tagHandlers["param"] = make_pair(&PyDocConverter::handleTagParam, "");
|
||||
tagHandlers["tparam"] = make_pair(&PyDocConverter::handleTagParam, "");
|
||||
// this command just prints it's contents
|
||||
// (it is internal command of swig's parser, contains plain text)
|
||||
tagHandlers["plainstd::string"] = make_pair(&PyDocConverter::handlePlainString, "");
|
||||
tagHandlers["plainstd::string"] = make_pair(
|
||||
&PyDocConverter::handlePlainString, "");
|
||||
tagHandlers["plainstd::endl"] = make_pair(&PyDocConverter::handleNewLine, "");
|
||||
tagHandlers["n"] = make_pair(&PyDocConverter::handleNewLine, "");
|
||||
|
||||
|
|
@ -140,97 +147,99 @@ void PyDocConverter::fillStaticTables() {
|
|||
tagHandlers["f{"] = make_pair(&PyDocConverter::handleTagVerbatim, "");
|
||||
|
||||
// HTML tags
|
||||
tagHandlers["<a" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag_A, "" );
|
||||
tagHandlers["<b" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag2, "__");
|
||||
tagHandlers["<blockquote"] = make_pair(&PyDocConverter::handleDoxyHtmlTag_A, "Quote: ");
|
||||
tagHandlers["<body" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "" );
|
||||
tagHandlers["<br" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "\n" );
|
||||
tagHandlers["<a"] = make_pair(&PyDocConverter::handleDoxyHtmlTag_A, "");
|
||||
tagHandlers["<b"] = make_pair(&PyDocConverter::handleDoxyHtmlTag2, "__");
|
||||
tagHandlers["<blockquote"] = make_pair(&PyDocConverter::handleDoxyHtmlTag_A,
|
||||
"Quote: ");
|
||||
tagHandlers["<body"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
tagHandlers["<br"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "\n");
|
||||
|
||||
// there is no formatting for this tag as it was deprecated in HTML 4.01 and
|
||||
// not used in HTML 5
|
||||
tagHandlers["<center" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "" );
|
||||
tagHandlers["<center"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
tagHandlers["<caption"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
tagHandlers["<code" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag2, "'" );
|
||||
tagHandlers["<code"] = make_pair(&PyDocConverter::handleDoxyHtmlTag2, "'");
|
||||
|
||||
tagHandlers["<dl" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
tagHandlers["<dd" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, " ");
|
||||
tagHandlers["<dt" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
tagHandlers["<dl"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
tagHandlers["<dd"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, " ");
|
||||
tagHandlers["<dt"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
|
||||
tagHandlers["<dfn" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "" );
|
||||
tagHandlers["<div" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "" );
|
||||
tagHandlers["<em" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag2, "__");
|
||||
tagHandlers["<form" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "" );
|
||||
tagHandlers["<hr" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag,
|
||||
"--------------------------------------------------------------------\n" );
|
||||
tagHandlers["<h1" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "# " );
|
||||
tagHandlers["<h2" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "## " );
|
||||
tagHandlers["<h3" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "### " );
|
||||
tagHandlers["<i" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag2, "_");
|
||||
tagHandlers["<input" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "" );
|
||||
tagHandlers["<img" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "Image:" );
|
||||
tagHandlers["<li" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "- ");
|
||||
tagHandlers["<meta" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
tagHandlers["<dfn"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
tagHandlers["<div"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
tagHandlers["<em"] = make_pair(&PyDocConverter::handleDoxyHtmlTag2, "__");
|
||||
tagHandlers["<form"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
tagHandlers["<hr"] = make_pair(&PyDocConverter::handleDoxyHtmlTag,
|
||||
"--------------------------------------------------------------------\n");
|
||||
tagHandlers["<h1"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "# ");
|
||||
tagHandlers["<h2"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "## ");
|
||||
tagHandlers["<h3"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "### ");
|
||||
tagHandlers["<i"] = make_pair(&PyDocConverter::handleDoxyHtmlTag2, "_");
|
||||
tagHandlers["<input"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
tagHandlers["<img"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "Image:");
|
||||
tagHandlers["<li"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "- ");
|
||||
tagHandlers["<meta"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
tagHandlers["<multicol"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
tagHandlers["<ol" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
tagHandlers["<p" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "\n");
|
||||
tagHandlers["<pre" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "" );
|
||||
tagHandlers["<small" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "" );
|
||||
tagHandlers["<span" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag2, "'" );
|
||||
tagHandlers["<strong" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag2, "__");
|
||||
tagHandlers["<ol"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
tagHandlers["<p"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "\n");
|
||||
tagHandlers["<pre"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
tagHandlers["<small"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
tagHandlers["<span"] = make_pair(&PyDocConverter::handleDoxyHtmlTag2, "'");
|
||||
tagHandlers["<strong"] = make_pair(&PyDocConverter::handleDoxyHtmlTag2, "__");
|
||||
|
||||
// make a space between text and super/sub script.
|
||||
tagHandlers["<sub" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, " ");
|
||||
tagHandlers["<sup" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, " ");
|
||||
tagHandlers["<sub"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, " ");
|
||||
tagHandlers["<sup"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, " ");
|
||||
|
||||
tagHandlers["<table" ] = make_pair(&PyDocConverter::handleDoxyHtmlTagNoParam, "");
|
||||
tagHandlers["<td" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag_td, "");
|
||||
tagHandlers["<th" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag_th, "");
|
||||
tagHandlers["<tr" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag_tr, "");
|
||||
tagHandlers["<tt" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
tagHandlers["<kbd" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
tagHandlers["<ul" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
tagHandlers["<var" ] = make_pair(&PyDocConverter::handleDoxyHtmlTag2, "_");
|
||||
tagHandlers["<table"] = make_pair(&PyDocConverter::handleDoxyHtmlTagNoParam,
|
||||
"");
|
||||
tagHandlers["<td"] = make_pair(&PyDocConverter::handleDoxyHtmlTag_td, "");
|
||||
tagHandlers["<th"] = make_pair(&PyDocConverter::handleDoxyHtmlTag_th, "");
|
||||
tagHandlers["<tr"] = make_pair(&PyDocConverter::handleDoxyHtmlTag_tr, "");
|
||||
tagHandlers["<tt"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
tagHandlers["<kbd"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
tagHandlers["<ul"] = make_pair(&PyDocConverter::handleDoxyHtmlTag, "");
|
||||
tagHandlers["<var"] = make_pair(&PyDocConverter::handleDoxyHtmlTag2, "_");
|
||||
|
||||
// HTML entities
|
||||
tagHandlers["©" ] = make_pair(&PyDocConverter::handleHtmlEntity, "(C)");
|
||||
tagHandlers["©"] = make_pair(&PyDocConverter::handleHtmlEntity, "(C)");
|
||||
tagHandlers["&trade"] = make_pair(&PyDocConverter::handleHtmlEntity, " TM");
|
||||
tagHandlers["®" ] = make_pair(&PyDocConverter::handleHtmlEntity, "(R)");
|
||||
tagHandlers["<" ] = make_pair(&PyDocConverter::handleHtmlEntity, "<");
|
||||
tagHandlers[">" ] = make_pair(&PyDocConverter::handleHtmlEntity, ">");
|
||||
tagHandlers["&" ] = make_pair(&PyDocConverter::handleHtmlEntity, "&");
|
||||
tagHandlers["&apos" ] = make_pair(&PyDocConverter::handleHtmlEntity, "'");
|
||||
tagHandlers[""" ] = make_pair(&PyDocConverter::handleHtmlEntity, "\"");
|
||||
tagHandlers["®"] = make_pair(&PyDocConverter::handleHtmlEntity, "(R)");
|
||||
tagHandlers["<"] = make_pair(&PyDocConverter::handleHtmlEntity, "<");
|
||||
tagHandlers[">"] = make_pair(&PyDocConverter::handleHtmlEntity, ">");
|
||||
tagHandlers["&"] = make_pair(&PyDocConverter::handleHtmlEntity, "&");
|
||||
tagHandlers["&apos"] = make_pair(&PyDocConverter::handleHtmlEntity, "'");
|
||||
tagHandlers["""] = make_pair(&PyDocConverter::handleHtmlEntity, "\"");
|
||||
tagHandlers["&lsquo"] = make_pair(&PyDocConverter::handleHtmlEntity, "`");
|
||||
tagHandlers["&rsquo"] = make_pair(&PyDocConverter::handleHtmlEntity, "'");
|
||||
tagHandlers["&ldquo"] = make_pair(&PyDocConverter::handleHtmlEntity, "\"");
|
||||
tagHandlers["&rdquo"] = make_pair(&PyDocConverter::handleHtmlEntity, "\"");
|
||||
tagHandlers["&ndash"] = make_pair(&PyDocConverter::handleHtmlEntity, "-");
|
||||
tagHandlers["&mdash"] = make_pair(&PyDocConverter::handleHtmlEntity, "--");
|
||||
tagHandlers[" " ] = make_pair(&PyDocConverter::handleHtmlEntity, " ");
|
||||
tagHandlers[" "] = make_pair(&PyDocConverter::handleHtmlEntity, " ");
|
||||
tagHandlers["×"] = make_pair(&PyDocConverter::handleHtmlEntity, "x");
|
||||
tagHandlers["&minus"] = make_pair(&PyDocConverter::handleHtmlEntity, "-");
|
||||
tagHandlers["&sdot" ] = make_pair(&PyDocConverter::handleHtmlEntity, ".");
|
||||
tagHandlers["&sim" ] = make_pair(&PyDocConverter::handleHtmlEntity, "~");
|
||||
tagHandlers["&le" ] = make_pair(&PyDocConverter::handleHtmlEntity, "<=");
|
||||
tagHandlers["&ge" ] = make_pair(&PyDocConverter::handleHtmlEntity, ">=");
|
||||
tagHandlers["&larr" ] = make_pair(&PyDocConverter::handleHtmlEntity, "<--");
|
||||
tagHandlers["&rarr" ] = make_pair(&PyDocConverter::handleHtmlEntity, "-->");
|
||||
tagHandlers["&sdot"] = make_pair(&PyDocConverter::handleHtmlEntity, ".");
|
||||
tagHandlers["&sim"] = make_pair(&PyDocConverter::handleHtmlEntity, "~");
|
||||
tagHandlers["&le"] = make_pair(&PyDocConverter::handleHtmlEntity, "<=");
|
||||
tagHandlers["&ge"] = make_pair(&PyDocConverter::handleHtmlEntity, ">=");
|
||||
tagHandlers["&larr"] = make_pair(&PyDocConverter::handleHtmlEntity, "<--");
|
||||
tagHandlers["&rarr"] = make_pair(&PyDocConverter::handleHtmlEntity, "-->");
|
||||
}
|
||||
|
||||
PyDocConverter::PyDocConverter(bool debugTranslator, bool debugParser)
|
||||
: DoxygenTranslator(debugTranslator, debugParser),
|
||||
m_tableLineLen(0),
|
||||
m_prevRowIsTH(false)
|
||||
PyDocConverter::PyDocConverter(bool debugTranslator, bool debugParser) :
|
||||
DoxygenTranslator(debugTranslator, debugParser), m_tableLineLen(0), m_prevRowIsTH(
|
||||
false)
|
||||
{
|
||||
fillStaticTables();
|
||||
}
|
||||
|
||||
std::string PyDocConverter::getParamType(std::string param) {
|
||||
std::string PyDocConverter::getParamType(std::string param)
|
||||
{
|
||||
ParmList *plist = CopyParmList(Getattr(currentNode, "parms"));
|
||||
Parm *p = NULL;
|
||||
for (p = plist; p;) {
|
||||
if (Char(Getattr(p, "name")) == param) {
|
||||
std::string type = Char(SwigType_str(Getattr(p, "type"), ""));
|
||||
if (Char (Getattr(p, "name")) == param) {
|
||||
std::string type = Char (SwigType_str(Getattr(p, "type"), ""));
|
||||
return type;
|
||||
}
|
||||
/*
|
||||
|
|
@ -244,17 +253,21 @@ std::string PyDocConverter::getParamType(std::string param) {
|
|||
return "";
|
||||
}
|
||||
|
||||
std::string PyDocConverter::justifyString(std::string documentString, int indent, int maxWidth) {
|
||||
std::string PyDocConverter::justifyString(std::string documentString,
|
||||
int indent, int maxWidth)
|
||||
{
|
||||
std::string formattedString;
|
||||
std::string currentLine;
|
||||
|
||||
for (std::string::iterator stringPosition = documentString.begin(); stringPosition != documentString.end(); ++stringPosition) {
|
||||
for (std::string::iterator stringPosition = documentString.begin();
|
||||
stringPosition != documentString.end(); ++stringPosition) {
|
||||
if (currentLine.length() == 0)
|
||||
currentLine.resize(indent, ' ');
|
||||
|
||||
currentLine += *stringPosition;
|
||||
|
||||
if ((iswspace(*stringPosition) && (int) currentLine.size() >= maxWidth) || (stringPosition + 1) == documentString.end()) {
|
||||
if ((iswspace(*stringPosition) && (int) currentLine.size() >= maxWidth)
|
||||
|| (stringPosition + 1) == documentString.end()) {
|
||||
formattedString += currentLine + "\n";
|
||||
currentLine = "";
|
||||
}
|
||||
|
|
@ -267,14 +280,15 @@ std::string PyDocConverter::justifyString(std::string documentString, int indent
|
|||
return formattedString;
|
||||
}
|
||||
|
||||
std::string PyDocConverter::translateSubtree(DoxygenEntity & doxygenEntity) {
|
||||
std::string PyDocConverter::translateSubtree(DoxygenEntity & doxygenEntity)
|
||||
{
|
||||
std::string translatedComment;
|
||||
|
||||
if (doxygenEntity.isLeaf)
|
||||
return translatedComment;
|
||||
|
||||
std::string currentSection;
|
||||
std::list < DoxygenEntity >::iterator p = doxygenEntity.entityList.begin();
|
||||
std::list<DoxygenEntity>::iterator p = doxygenEntity.entityList.begin();
|
||||
while (p != doxygenEntity.entityList.end()) {
|
||||
std::map<std::string, std::string>::iterator it;
|
||||
it = sectionTitles.find(p->typeOfEntity);
|
||||
|
|
@ -292,50 +306,63 @@ std::string PyDocConverter::translateSubtree(DoxygenEntity & doxygenEntity) {
|
|||
return translatedComment;
|
||||
}
|
||||
|
||||
void PyDocConverter::translateEntity(DoxygenEntity & doxyEntity, std::string &translatedComment) {
|
||||
void PyDocConverter::translateEntity(DoxygenEntity & doxyEntity,
|
||||
std::string &translatedComment)
|
||||
{
|
||||
// check if we have needed handler and call it
|
||||
std::map<std::string, std::pair<tagHandler, std::string > >::iterator it;
|
||||
std::map<std::string, std::pair<tagHandler, std::string> >::iterator it;
|
||||
it = tagHandlers.find(doxyEntity.typeOfEntity);
|
||||
if (it!=tagHandlers.end())
|
||||
(this->*(it->second.first))(doxyEntity, translatedComment, it->second.second);
|
||||
if (it != tagHandlers.end())
|
||||
(this->*(it->second.first))(doxyEntity, translatedComment,
|
||||
it->second.second);
|
||||
}
|
||||
|
||||
|
||||
void PyDocConverter::handleParagraph(DoxygenEntity& tag, std::string& translatedComment, std::string &arg) {
|
||||
void PyDocConverter::handleParagraph(DoxygenEntity& tag,
|
||||
std::string& translatedComment,
|
||||
std::string &arg)
|
||||
{
|
||||
translatedComment += translateSubtree(tag) + arg;
|
||||
}
|
||||
|
||||
|
||||
void PyDocConverter::handlePlainString(DoxygenEntity& tag, std::string& translatedComment, std::string&) {
|
||||
void PyDocConverter::handlePlainString(DoxygenEntity& tag,
|
||||
std::string& translatedComment,
|
||||
std::string&)
|
||||
{
|
||||
translatedComment += tag.data;
|
||||
if (tag.data.size() && tag.data[tag.data.size()-1] != ' ')
|
||||
if (tag.data.size() && tag.data[tag.data.size() - 1] != ' ')
|
||||
translatedComment += "";
|
||||
}
|
||||
|
||||
|
||||
void PyDocConverter::handleTagVerbatim(DoxygenEntity& tag,
|
||||
std::string& translatedComment,
|
||||
std::string &arg) {
|
||||
std::string& translatedComment,
|
||||
std::string &arg)
|
||||
{
|
||||
translatedComment += arg + " ";
|
||||
for (DoxygenEntityListCIt it = tag.entityList.begin(); it != tag.entityList.end(); it++) {
|
||||
translatedComment += it->data;
|
||||
for (DoxygenEntityListCIt it = tag.entityList.begin();
|
||||
it != tag.entityList.end(); it++) {
|
||||
translatedComment += it->data;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void PyDocConverter::handleTagMessage(DoxygenEntity& tag, std::string& translatedComment, std::string &arg) {
|
||||
void PyDocConverter::handleTagMessage(DoxygenEntity& tag,
|
||||
std::string& translatedComment,
|
||||
std::string &arg)
|
||||
{
|
||||
std::string dummy;
|
||||
translatedComment += arg;
|
||||
handleParagraph(tag, translatedComment, dummy);
|
||||
}
|
||||
|
||||
|
||||
void PyDocConverter::handleTagChar(DoxygenEntity& tag, std::string& translatedComment, std::string&) {
|
||||
void PyDocConverter::handleTagChar(DoxygenEntity& tag,
|
||||
std::string& translatedComment, std::string&)
|
||||
{
|
||||
translatedComment += tag.typeOfEntity;
|
||||
}
|
||||
|
||||
|
||||
void PyDocConverter::handleTagIf(DoxygenEntity& tag, std::string& translatedComment, std::string &arg) {
|
||||
void PyDocConverter::handleTagIf(DoxygenEntity& tag,
|
||||
std::string& translatedComment,
|
||||
std::string &arg)
|
||||
{
|
||||
std::string dummy;
|
||||
translatedComment += arg;
|
||||
if (tag.entityList.size()) {
|
||||
|
|
@ -345,8 +372,9 @@ void PyDocConverter::handleTagIf(DoxygenEntity& tag, std::string& translatedComm
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
void PyDocConverter::handleTagPar(DoxygenEntity& tag, std::string& translatedComment, std::string&) {
|
||||
void PyDocConverter::handleTagPar(DoxygenEntity& tag,
|
||||
std::string& translatedComment, std::string&)
|
||||
{
|
||||
std::string dummy;
|
||||
translatedComment += "Title: ";
|
||||
if (tag.entityList.size())
|
||||
|
|
@ -355,8 +383,10 @@ void PyDocConverter::handleTagPar(DoxygenEntity& tag, std::string& translatedCom
|
|||
handleParagraph(tag, translatedComment, dummy);
|
||||
}
|
||||
|
||||
|
||||
void PyDocConverter::handleTagImage(DoxygenEntity& tag, std::string& translatedComment, std::string&) {
|
||||
void PyDocConverter::handleTagImage(DoxygenEntity& tag,
|
||||
std::string& translatedComment,
|
||||
std::string&)
|
||||
{
|
||||
if (tag.entityList.size() < 2)
|
||||
return;
|
||||
tag.entityList.pop_front();
|
||||
|
|
@ -367,10 +397,10 @@ void PyDocConverter::handleTagImage(DoxygenEntity& tag, std::string& translatedC
|
|||
translatedComment += "(" + tag.entityList.begin()->data + ")";
|
||||
}
|
||||
|
||||
|
||||
void PyDocConverter::handleTagParam(DoxygenEntity& tag,
|
||||
std::string& translatedComment,
|
||||
std::string&) {
|
||||
std::string& translatedComment,
|
||||
std::string&)
|
||||
{
|
||||
std::string dummy;
|
||||
if (tag.entityList.size() < 2)
|
||||
return;
|
||||
|
|
@ -386,140 +416,152 @@ void PyDocConverter::handleTagParam(DoxygenEntity& tag,
|
|||
handleParagraph(tag, translatedComment, dummy);
|
||||
}
|
||||
|
||||
|
||||
void PyDocConverter::handleTagWrap(DoxygenEntity& tag, std::string& translatedComment, std::string &arg) {
|
||||
void PyDocConverter::handleTagWrap(DoxygenEntity& tag,
|
||||
std::string& translatedComment,
|
||||
std::string &arg)
|
||||
{
|
||||
if (tag.entityList.size()) { // do not include empty tags
|
||||
std::string tagData = translateSubtree(tag);
|
||||
// wrap the thing, ignoring whitespaces
|
||||
size_t wsPos = tagData.find_last_not_of("\n\t ");
|
||||
if (wsPos != std::string::npos && wsPos != tagData.size() - 1)
|
||||
translatedComment += arg + tagData.substr(0, wsPos + 1) + arg + tagData.substr(wsPos + 1);
|
||||
translatedComment += arg + tagData.substr(0, wsPos + 1) + arg
|
||||
+ tagData.substr(wsPos + 1);
|
||||
else
|
||||
translatedComment += arg + tagData + arg;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void PyDocConverter::handleDoxyHtmlTag(DoxygenEntity& tag,
|
||||
std::string& translatedComment,
|
||||
std::string &arg) {
|
||||
std::string htmlTagArgs = tag.data;
|
||||
if (htmlTagArgs == "/") {
|
||||
// end html tag, for example "</ul>
|
||||
// translatedComment += "</" + arg.substr(1) + ">";
|
||||
} else {
|
||||
translatedComment += arg + htmlTagArgs;
|
||||
}
|
||||
std::string& translatedComment,
|
||||
std::string &arg)
|
||||
{
|
||||
std::string htmlTagArgs = tag.data;
|
||||
if (htmlTagArgs == "/") {
|
||||
// end html tag, for example "</ul>
|
||||
// translatedComment += "</" + arg.substr(1) + ">";
|
||||
} else {
|
||||
translatedComment += arg + htmlTagArgs;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void PyDocConverter::handleDoxyHtmlTagNoParam(DoxygenEntity& tag,
|
||||
std::string& translatedComment,
|
||||
std::string &arg) {
|
||||
std::string htmlTagArgs = tag.data;
|
||||
if (htmlTagArgs == "/") {
|
||||
// end html tag, for example "</ul>
|
||||
} else {
|
||||
translatedComment += arg;
|
||||
}
|
||||
std::string& translatedComment,
|
||||
std::string &arg)
|
||||
{
|
||||
std::string htmlTagArgs = tag.data;
|
||||
if (htmlTagArgs == "/") {
|
||||
// end html tag, for example "</ul>
|
||||
} else {
|
||||
translatedComment += arg;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void PyDocConverter::handleDoxyHtmlTag_A(DoxygenEntity& tag,
|
||||
std::string& translatedComment,
|
||||
std::string &arg) {
|
||||
std::string htmlTagArgs = tag.data;
|
||||
if (htmlTagArgs == "/") {
|
||||
// end html tag, "</a>
|
||||
translatedComment += " (" + m_url + ')';
|
||||
m_url.clear();
|
||||
} else {
|
||||
m_url.clear();
|
||||
size_t pos = htmlTagArgs.find('=');
|
||||
if (pos != string::npos) {
|
||||
m_url = htmlTagArgs.substr(pos + 1);
|
||||
}
|
||||
translatedComment += arg;
|
||||
std::string& translatedComment,
|
||||
std::string &arg)
|
||||
{
|
||||
std::string htmlTagArgs = tag.data;
|
||||
if (htmlTagArgs == "/") {
|
||||
// end html tag, "</a>
|
||||
translatedComment += " (" + m_url + ')';
|
||||
m_url.clear();
|
||||
} else {
|
||||
m_url.clear();
|
||||
size_t pos = htmlTagArgs.find('=');
|
||||
if (pos != string::npos) {
|
||||
m_url = htmlTagArgs.substr(pos + 1);
|
||||
}
|
||||
translatedComment += arg;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void PyDocConverter::handleDoxyHtmlTag2(DoxygenEntity& tag,
|
||||
std::string& translatedComment,
|
||||
std::string &arg) {
|
||||
std::string htmlTagArgs = tag.data;
|
||||
if (htmlTagArgs == "/") {
|
||||
// end html tag, for example "</em>
|
||||
translatedComment += arg;
|
||||
} else {
|
||||
translatedComment += arg;
|
||||
}
|
||||
std::string& translatedComment,
|
||||
std::string &arg)
|
||||
{
|
||||
std::string htmlTagArgs = tag.data;
|
||||
if (htmlTagArgs == "/") {
|
||||
// end html tag, for example "</em>
|
||||
translatedComment += arg;
|
||||
} else {
|
||||
translatedComment += arg;
|
||||
}
|
||||
}
|
||||
|
||||
void PyDocConverter::handleDoxyHtmlTag_tr(DoxygenEntity& tag,
|
||||
std::string& translatedComment,
|
||||
std::string &) {
|
||||
std::string htmlTagArgs = tag.data;
|
||||
if (htmlTagArgs == "/") {
|
||||
// end tag, </tr> appends vertical table line '|'
|
||||
translatedComment += '|';
|
||||
size_t nlPos = translatedComment.rfind('\n');
|
||||
if (nlPos != string::npos) {
|
||||
size_t startOfTableLinePos = translatedComment.find_first_not_of(" \t", nlPos);
|
||||
if (startOfTableLinePos != string::npos) {
|
||||
m_tableLineLen = translatedComment.size() - startOfTableLinePos - 1;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (m_prevRowIsTH) {
|
||||
// if previous row contained <th> tag, add horizontal separator
|
||||
translatedComment += string(m_tableLineLen, '-') + '\n';
|
||||
m_prevRowIsTH = false;
|
||||
std::string& translatedComment,
|
||||
std::string &)
|
||||
{
|
||||
std::string htmlTagArgs = tag.data;
|
||||
size_t nlPos = translatedComment.rfind('\n');
|
||||
if (htmlTagArgs == "/") {
|
||||
// end tag, </tr> appends vertical table line '|'
|
||||
translatedComment += '|';
|
||||
if (nlPos != string::npos) {
|
||||
size_t startOfTableLinePos = translatedComment.find_first_not_of(" \t",
|
||||
nlPos + 1);
|
||||
if (startOfTableLinePos != string::npos) {
|
||||
m_tableLineLen = translatedComment.size() - startOfTableLinePos;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (m_prevRowIsTH) {
|
||||
// if previous row contained <th> tag, add horizontal separator
|
||||
// but first get leading spaces, because they'll be needed for the next row
|
||||
size_t numLeadingSpaces = translatedComment.size() - nlPos - 1;
|
||||
|
||||
translatedComment += string(m_tableLineLen, '-') + '\n';
|
||||
|
||||
if (nlPos != string::npos) {
|
||||
translatedComment += string(numLeadingSpaces, ' ');
|
||||
}
|
||||
m_prevRowIsTH = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PyDocConverter::handleDoxyHtmlTag_th(DoxygenEntity& tag,
|
||||
std::string& translatedComment,
|
||||
std::string &) {
|
||||
std::string htmlTagArgs = tag.data;
|
||||
if (htmlTagArgs == "/") {
|
||||
// end tag, </th> is ignored
|
||||
} else {
|
||||
translatedComment += '|';
|
||||
m_prevRowIsTH = true;
|
||||
}
|
||||
std::string& translatedComment,
|
||||
std::string &)
|
||||
{
|
||||
std::string htmlTagArgs = tag.data;
|
||||
if (htmlTagArgs == "/") {
|
||||
// end tag, </th> is ignored
|
||||
} else {
|
||||
translatedComment += '|';
|
||||
m_prevRowIsTH = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void PyDocConverter::handleDoxyHtmlTag_td(DoxygenEntity& tag,
|
||||
std::string& translatedComment,
|
||||
std::string &) {
|
||||
std::string htmlTagArgs = tag.data;
|
||||
if (htmlTagArgs == "/") {
|
||||
// end tag, </td> is ignored
|
||||
} else {
|
||||
translatedComment += '|';
|
||||
}
|
||||
std::string& translatedComment,
|
||||
std::string &)
|
||||
{
|
||||
std::string htmlTagArgs = tag.data;
|
||||
if (htmlTagArgs == "/") {
|
||||
// end tag, </td> is ignored
|
||||
} else {
|
||||
translatedComment += '|';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void PyDocConverter::handleHtmlEntity(DoxygenEntity&,
|
||||
std::string& translatedComment,
|
||||
std::string &arg) {
|
||||
// html entities
|
||||
translatedComment += arg;
|
||||
std::string& translatedComment,
|
||||
std::string &arg)
|
||||
{
|
||||
// html entities
|
||||
translatedComment += arg;
|
||||
}
|
||||
|
||||
|
||||
void PyDocConverter::handleNewLine(DoxygenEntity&, std::string& translatedComment, std::string&) {
|
||||
void PyDocConverter::handleNewLine(DoxygenEntity&,
|
||||
std::string& translatedComment, std::string&)
|
||||
{
|
||||
translatedComment += "\n";
|
||||
}
|
||||
|
||||
|
||||
String *PyDocConverter::makeDocumentation(Node *n) {
|
||||
String *PyDocConverter::makeDocumentation(Node *n)
|
||||
{
|
||||
String *documentation;
|
||||
std::string pyDocString, result;
|
||||
|
||||
|
|
@ -532,25 +574,26 @@ String *PyDocConverter::makeDocumentation(Node *n) {
|
|||
while (Getattr(n, "sym:previousSibling"))
|
||||
n = Getattr(n, "sym:previousSibling");
|
||||
|
||||
std::vector < std::string > allDocumentation;
|
||||
std::vector<std::string> allDocumentation;
|
||||
|
||||
// for each real method (not a generated overload) append the documentation
|
||||
while (n) {
|
||||
documentation = getDoxygenComment(n);
|
||||
if (!Swig_is_generated_overload(n) && documentation) {
|
||||
currentNode = n;
|
||||
if (GetFlag(n, "feature:doxygen:notranslate")) {
|
||||
String *comment = NewString("");
|
||||
Append(comment, documentation);
|
||||
Replaceall(comment, "\n *", "\n");
|
||||
allDocumentation.push_back(Char(comment));
|
||||
Delete(comment);
|
||||
}
|
||||
else {
|
||||
std::list < DoxygenEntity > entityList = parser.createTree(Char(documentation), Char(Getfile(documentation)), Getline(documentation));
|
||||
DoxygenEntity root("root", entityList);
|
||||
allDocumentation.push_back(translateSubtree(root));
|
||||
}
|
||||
currentNode = n;
|
||||
if (GetFlag(n, "feature:doxygen:notranslate")) {
|
||||
String *comment = NewString("");
|
||||
Append(comment, documentation);
|
||||
Replaceall(comment, "\n *", "\n");
|
||||
allDocumentation.push_back(Char (comment));
|
||||
Delete(comment);
|
||||
} else {
|
||||
std::list<DoxygenEntity> entityList = parser.createTree(
|
||||
Char (documentation), Char (Getfile(documentation)),
|
||||
Getline(documentation));
|
||||
DoxygenEntity root("root", entityList);
|
||||
allDocumentation.push_back(translateSubtree(root));
|
||||
}
|
||||
}
|
||||
n = Getattr(n, "sym:nextSibling");
|
||||
}
|
||||
|
|
@ -558,9 +601,12 @@ String *PyDocConverter::makeDocumentation(Node *n) {
|
|||
// construct final documentation string
|
||||
if (allDocumentation.size() > 1) {
|
||||
std::ostringstream concatDocString;
|
||||
for (int realOverloadCount = 0; realOverloadCount < (int) allDocumentation.size(); realOverloadCount++) {
|
||||
for (int realOverloadCount = 0;
|
||||
realOverloadCount < (int) allDocumentation.size();
|
||||
realOverloadCount++) {
|
||||
concatDocString << generateDivider() << std::endl;
|
||||
concatDocString << "Overload " << (realOverloadCount + 1) << ":" << std::endl;
|
||||
concatDocString << "Overload " << (realOverloadCount + 1) << ":"
|
||||
<< std::endl;
|
||||
concatDocString << generateDivider();
|
||||
concatDocString << allDocumentation[realOverloadCount] << std::endl;
|
||||
}
|
||||
|
|
@ -577,11 +623,12 @@ String *PyDocConverter::makeDocumentation(Node *n) {
|
|||
String *comment = NewString("");
|
||||
Append(comment, documentation);
|
||||
Replaceall(comment, "\n *", "\n");
|
||||
pyDocString = Char(comment);
|
||||
pyDocString = Char (comment);
|
||||
Delete(comment);
|
||||
}
|
||||
else {
|
||||
std::list < DoxygenEntity > entityList = parser.createTree(Char(documentation), Char(Getfile(documentation)), Getline(documentation));
|
||||
} else {
|
||||
std::list<DoxygenEntity> entityList = parser.createTree(
|
||||
Char (documentation), Char (Getfile(documentation)),
|
||||
Getline(documentation));
|
||||
DoxygenEntity root("root", entityList);
|
||||
pyDocString = translateSubtree(root);
|
||||
}
|
||||
|
|
@ -610,7 +657,8 @@ String *PyDocConverter::makeDocumentation(Node *n) {
|
|||
return NewString("");
|
||||
}
|
||||
|
||||
std::string PyDocConverter::generateDivider() {
|
||||
std::string PyDocConverter::generateDivider()
|
||||
{
|
||||
static string dividerString(DOC_STRING_LENGTH, '-');
|
||||
return dividerString;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue