Skip to content

Commit

Permalink
Adapt doxygen to ddln
Browse files Browse the repository at this point in the history
 * Support <abbr> tag
 * Package as .tar.gz with BUILD.go for DBT
 * Use section title as section id in markdown
  • Loading branch information
finomen committed Nov 17, 2021
1 parent ef9b20a commit 81554f8
Show file tree
Hide file tree
Showing 25 changed files with 224 additions and 5 deletions.
3 changes: 3 additions & 0 deletions BUILD.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package doxygen

var Doxygen = in("bin/doxygen")
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -197,5 +197,7 @@ add_subdirectory(addon)
enable_testing()
add_subdirectory(testing)

install(FILES BUILD.go DESTINATION ".")

include(cmake/packaging.cmake) # set CPACK_xxxx properties
include(CPack)
2 changes: 1 addition & 1 deletion cmake/packaging.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ elseif(UNIX)
execute_process(COMMAND uname -m OUTPUT_VARIABLE CPACK_RPM_PACKAGE_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)

if(distribution STREQUAL "Debian" OR distribution STREQUAL "Ubuntu")
set(CPACK_GENERATOR "DEB")
set(CPACK_GENERATOR "DEB;TGZ")
execute_process(COMMAND dpkg --print-architecture OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)
set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE})

Expand Down
1 change: 1 addition & 0 deletions src/cmdmapper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,7 @@ CommandMap htmlTagMap[] =
{ "blockquote", HTML_BLOCKQUOTE },
{ "strike", HTML_STRIKE },
{ "s", HTML_S },
{ "abbr", HTML_ABBR },
{ "u", HTML_UNDERLINE },
{ "ins", HTML_INS },
{ "del", HTML_DEL },
Expand Down
1 change: 1 addition & 0 deletions src/cmdmapper.h
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,7 @@ enum HtmlTagType
HTML_INS = 36,
HTML_DEL = 37,
HTML_S = 38,
HTML_ABBR = 39,

XML_CmdMask = 0x100,

Expand Down
14 changes: 14 additions & 0 deletions src/docbookvisitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1176,6 +1176,20 @@ DB_VIS_C
m_t << "</link>";
}

void DocbookDocVisitor::visitPre(DocAbbr *abbr)
{
DB_VIS_C
if (m_hide) return;
m_t << "<abbr title=\"" << abbr->title() << "\">";
}

void DocbookDocVisitor::visitPost(DocAbbr *)
{
DB_VIS_C
if (m_hide) return;
m_t << "</abbr>";
}

void DocbookDocVisitor::visitPre(DocHtmlHeader *)
{
DB_VIS_C
Expand Down
2 changes: 2 additions & 0 deletions src/docbookvisitor.h
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@ class DocbookDocVisitor : public DocVisitor
void visitPost(DocInternal *);
void visitPre(DocHRef *);
void visitPost(DocHRef *);
void visitPre(DocAbbr *);
void visitPost(DocAbbr *);
void visitPre(DocHtmlHeader *);
void visitPost(DocHtmlHeader *);
void visitPre(DocImage *);
Expand Down
69 changes: 68 additions & 1 deletion src/docparser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1578,7 +1578,7 @@ static bool defaultHandleToken(DocNode *parent,int tok, QList<DocNode> &children
handleStyleLeave(parent,children,DocStyleChange::Strike,tokenName);
}
break;
case HTML_DEL:
case HTML_DEL:
if (!g_token->endTag)
{
handleStyleEnter(parent,children,DocStyleChange::Del,tokenName,&g_token->attribs);
Expand Down Expand Up @@ -1764,6 +1764,19 @@ static void handleImg(DocNode *parent,QList<DocNode> &children,const HtmlAttribL

//---------------------------------------------------------------------------

static void handleAbbr(DocNode *parent,QList<DocNode> &children,const HtmlAttribList &tagHtmlAttribs)
{
HtmlAttribListIterator li(tagHtmlAttribs);
QCString title = tagHtmlAttribs.find("title");

HtmlAttribList attrList = tagHtmlAttribs;
DocAbbr *abbr = new DocAbbr(parent,attrList,title,g_relPath);
children.append(abbr);
abbr->parse();
}

//---------------------------------------------------------------------------

DocSymbol::SymType DocSymbol::decodeSymbol(const QCString &symName)
{
DBG(("decodeSymbol(%s)\n",qPrint(symName)));
Expand Down Expand Up @@ -3069,6 +3082,54 @@ int DocHRef::parse()

//---------------------------------------------------------------------------

int DocAbbr::parse()
{
int retval=RetVal_OK;
g_nodeStack.push(this);
DBG(("DocAbbr::parse() start\n"));

int tok;
while ((tok=doctokenizerYYlex()))
{
if (!defaultHandleToken(this,tok,m_children))
{
switch (tok)
{
case TK_HTMLTAG:
{
int tagId=Mappers::htmlTagMapper->map(g_token->name);
if (tagId==HTML_ABBR && g_token->endTag) // found </abbr> tag
{
goto endabbr;
}
else
{
warn_doc_error(g_fileName,getDoctokinizerLineNr(),"Unexpected html tag <%s%s> found within <abbr title=...> context",
g_token->endTag?"/":"",qPrint(g_token->name));
}
}
break;
default:
errorHandleDefaultToken(this,tok,m_children,"<abbr>..</abbr> block");
break;
}
}
}
if (tok==0)
{
warn_doc_error(g_fileName,getDoctokinizerLineNr(),"Unexpected end of comment while inside"
" <abbr title=...> tag");
}
endabbr:
handlePendingStyleCommands(this,m_children);
DBG(("DocAbbr::parse() end\n"));
DocNode *n=g_nodeStack.pop();
ASSERT(n==this);
return retval;
}

//---------------------------------------------------------------------------

int DocInternal::parse(int level)
{
int retval=RetVal_OK;
Expand Down Expand Up @@ -3114,6 +3175,7 @@ int DocInternal::parse(int level)
{
DocSection *s=new DocSection(this,
QMIN(level+Doxygen::subpageNestingLevel,5),g_token->sectionId);

m_children.append(s);
retval = s->parse();
}
Expand Down Expand Up @@ -6074,6 +6136,11 @@ int DocPara::handleHtmlStartTag(const QCString &tagName,const HtmlAttribList &ta
handleImg(this,m_children,tagHtmlAttribs);
}
break;
case HTML_ABBR:
{
handleAbbr(this,m_children,tagHtmlAttribs);
}
break;
case HTML_BLOCKQUOTE:
if (!g_token->emptyTag)
{
Expand Down
22 changes: 21 additions & 1 deletion src/docparser.h
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,8 @@ class DocNode
Kind_ParBlock = 51,
Kind_DiaFile = 52,
Kind_Emoji = 53,
Kind_Sep = 54
Kind_Sep = 54,
Kind_HtmlAbbr = 55,
};
/*! Creates a new node */
DocNode() : m_parent(0), m_insidePre(FALSE) {}
Expand Down Expand Up @@ -979,6 +980,25 @@ class DocHRef : public CompAccept<DocHRef>
QCString m_relPath;
};

/** Node representing aabbreviation */
class DocAbbr : public CompAccept<DocAbbr>
{
public:
DocAbbr(DocNode *parent,const HtmlAttribList &attribs,const QCString &title,
const QCString &relPath) :
m_attribs(attribs), m_title(title), m_relPath(relPath) { m_parent = parent; }
int parse();
QCString title() const { return m_title; }
QCString relPath() const { return m_relPath; }
Kind kind() const { return Kind_HtmlAbbr; }
const HtmlAttribList &attribs() const { return m_attribs; }

private:
HtmlAttribList m_attribs;
QCString m_title;
QCString m_relPath;
};

/** Node Html heading */
class DocHtmlHeader : public CompAccept<DocHtmlHeader>
{
Expand Down
4 changes: 2 additions & 2 deletions src/doctokenizer.l
Original file line number Diff line number Diff line change
Expand Up @@ -435,8 +435,8 @@ WORD1NQ {ESCWORD}|{CHARWORDQ}+|"{"|"}"
WORD2NQ "."|","|"("|")"|"["|"]"|"::"|":"|";"|"\?"|"="|"'"
CAPTION [cC][aA][pP][tT][iI][oO][nN]
HTMLTAG "<"(("/")?){ID}({WS}+{ATTRIB})*{WS}*(("/")?)">"
HTMLKEYL "strong"|"center"|"table"|"caption"|"small"|"code"|"dfn"|"var"|"img"|"pre"|"sub"|"sup"|"tr"|"td"|"th"|"ol"|"ul"|"li"|"tt"|"kbd"|"em"|"hr"|"dl"|"dt"|"dd"|"br"|"i"|"a"|"b"|"p"|"strike"|"u"|"del"|"ins"|"s"
HTMLKEYU "STRONG"|"CENTER"|"TABLE"|"CAPTION"|"SMALL"|"CODE"|"DFN"|"VAR"|"IMG"|"PRE"|"SUB"|"SUP"|"TR"|"TD"|"TH"|"OL"|"UL"|"LI"|"TT"|"KBD"|"EM"|"HR"|"DL"|"DT"|"DD"|"BR"|"I"|"A"|"B"|"P"|"STRIKE"|"U"|"DEL"|"INS"|"S"
HTMLKEYL "strong"|"center"|"table"|"caption"|"small"|"code"|"dfn"|"var"|"img"|"pre"|"sub"|"sup"|"tr"|"td"|"th"|"ol"|"ul"|"li"|"tt"|"kbd"|"em"|"hr"|"dl"|"dt"|"dd"|"br"|"i"|"a"|"b"|"p"|"strike"|"u"|"del"|"ins"|"s"|"abbr"
HTMLKEYU "STRONG"|"CENTER"|"TABLE"|"CAPTION"|"SMALL"|"CODE"|"DFN"|"VAR"|"IMG"|"PRE"|"SUB"|"SUP"|"TR"|"TD"|"TH"|"OL"|"UL"|"LI"|"TT"|"KBD"|"EM"|"HR"|"DL"|"DT"|"DD"|"BR"|"I"|"A"|"B"|"P"|"STRIKE"|"U"|"DEL"|"INS"|"S"|"ABBR"
HTMLKEYW {HTMLKEYL}|{HTMLKEYU}
REFWORD2_PRE ("#"|"::")?((({ID}{TEMPLPART}?)|{ANONNS})("."|"#"|"::"|"-"|"/"))*({ID}{TEMPLPART}?(":")?)
REFWORD2 {REFWORD2_PRE}{FUNCARG2}?
Expand Down
3 changes: 3 additions & 0 deletions src/docvisitor.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ class DocAnchor;
class DocIndexEntry;
class DocInternal;
class DocHRef;
class DocAbbr;
class DocInclude;
class DocIncOperator;
class DocHtmlHeader;
Expand Down Expand Up @@ -162,6 +163,8 @@ class DocVisitor
virtual void visitPost(DocInternal *) = 0;
virtual void visitPre(DocHRef *) = 0;
virtual void visitPost(DocHRef *) = 0;
virtual void visitPre(DocAbbr*) = 0;
virtual void visitPost(DocAbbr *) = 0;
virtual void visitPre(DocHtmlHeader *) = 0;
virtual void visitPost(DocHtmlHeader *) = 0;
virtual void visitPre(DocImage *) = 0;
Expand Down
13 changes: 13 additions & 0 deletions src/htmldocvisitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1673,6 +1673,19 @@ void HtmlDocVisitor::visitPost(DocHRef *)
m_t << "</a>";
}

void HtmlDocVisitor::visitPre(DocAbbr *abbr)
{
if (m_hide) return;
m_t << "<abbr title=\"" << convertToHtml(abbr->title()) << "\""
<< htmlAttribsToString(abbr->attribs()) << ">";
}

void HtmlDocVisitor::visitPost(DocAbbr *)
{
if (m_hide) return;
m_t << "</abbr>";
}

void HtmlDocVisitor::visitPre(DocHtmlHeader *header)
{
if (m_hide) return;
Expand Down
2 changes: 2 additions & 0 deletions src/htmldocvisitor.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,8 @@ class HtmlDocVisitor : public DocVisitor
void visitPost(DocInternal *);
void visitPre(DocHRef *);
void visitPost(DocHRef *);
void visitPre(DocAbbr *);
void visitPost(DocAbbr *);
void visitPre(DocHtmlHeader *);
void visitPost(DocHtmlHeader *);
void visitPre(DocImage *);
Expand Down
18 changes: 18 additions & 0 deletions src/latexdocvisitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1347,6 +1347,24 @@ void LatexDocVisitor::visitPost(DocHRef *)
m_t << "}}";
}

void LatexDocVisitor::visitPre(DocAbbr *abbr)
{
if (m_hide) return;
if (Config_getBool(PDF_HYPERLINKS))
{
m_t << "\\ac{";
m_t << abbr->title();
m_t << "} (";
}
m_t << "{\\texttt{ ";
}

void LatexDocVisitor::visitPost(DocAbbr *)
{
if (m_hide) return;
m_t << "}})";
}

void LatexDocVisitor::visitPre(DocHtmlHeader *header)
{
if (m_hide) return;
Expand Down
2 changes: 2 additions & 0 deletions src/latexdocvisitor.h
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,8 @@ class LatexDocVisitor : public DocVisitor
void visitPost(DocInternal *);
void visitPre(DocHRef *);
void visitPost(DocHRef *);
void visitPre(DocAbbr *);
void visitPost(DocAbbr *);
void visitPre(DocHtmlHeader *);
void visitPost(DocHtmlHeader *) ;
void visitPre(DocImage *);
Expand Down
12 changes: 12 additions & 0 deletions src/mandocvisitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -800,6 +800,18 @@ void ManDocVisitor::visitPost(DocHRef *)
m_t << "\\fP";
}

void ManDocVisitor::visitPre(DocAbbr * abbr)
{
if (m_hide) return;
m_t << abbr->title() << " (";
}

void ManDocVisitor::visitPost(DocAbbr *)
{
if (m_hide) return;
m_t << ")";
}

void ManDocVisitor::visitPre(DocHtmlHeader *header)
{
if (m_hide) return;
Expand Down
2 changes: 2 additions & 0 deletions src/mandocvisitor.h
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,8 @@ class ManDocVisitor : public DocVisitor
void visitPost(DocInternal *);
void visitPre(DocHRef *);
void visitPost(DocHRef *);
void visitPre(DocAbbr *);
void visitPost(DocAbbr *);
void visitPre(DocHtmlHeader *);
void visitPost(DocHtmlHeader *) ;
void visitPre(DocImage *);
Expand Down
3 changes: 3 additions & 0 deletions src/markdown.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1462,6 +1462,9 @@ static QCString extractTitleId(QCString &title, int level)
//printf("found id='%s' title='%s'\n",id.data(),title.data());
return id;
}
if (title.find(' ') == -1) { // Use title as id if it is single word
return title;
}
if ((level > 0) && (level <= Config_getInt(TOC_INCLUDE_HEADINGS)))
{
static AtomicInt autoId { 0 };
Expand Down
16 changes: 16 additions & 0 deletions src/perlmodgen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,8 @@ class PerlModDocVisitor : public DocVisitor
void visitPost(DocInternal *);
void visitPre(DocHRef *);
void visitPost(DocHRef *);
void visitPre(DocAbbr*);
void visitPost(DocAbbr *);
void visitPre(DocHtmlHeader *);
void visitPost(DocHtmlHeader *);
void visitPre(DocImage *);
Expand Down Expand Up @@ -1101,6 +1103,20 @@ void PerlModDocVisitor::visitPost(DocHRef *)
#endif
}

void PerlModDocVisitor::visitPre(DocAbbr *)
{
#if 0
m_output.add("<ulink url=\""); m_output.add(href->url()); m_output.add("\">");
#endif
}

void PerlModDocVisitor::visitPost(DocAbbr *)
{
#if 0
m_output.add("</ulink>");
#endif
}

void PerlModDocVisitor::visitPre(DocHtmlHeader *)
{
#if 0
Expand Down
10 changes: 10 additions & 0 deletions src/printdocvisitor.h
Original file line number Diff line number Diff line change
Expand Up @@ -506,6 +506,16 @@ class PrintDocVisitor : public DocVisitor
indent_post();
printf("</a>\n");
}
void visitPre(DocAbbr *abbr)
{
indent_pre();
printf("<abbr title=\"%s\">\n",abbr->title().data());
}
void visitPost(DocAbbr *)
{
indent_post();
printf("</abbr>\n");
}
void visitPre(DocHtmlHeader *header)
{
indent_pre();
Expand Down
Loading

0 comments on commit 81554f8

Please sign in to comment.