Small JavaDoc converter and doxygen parser improvements, now basic tags working
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2012-doxygen@13263 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
293c5cfc1f
commit
509cbd72b0
4 changed files with 543 additions and 578 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -213,8 +213,7 @@ private:
|
|||
*/
|
||||
int addCommand(std::string commandString, TokenList & tokList, std::list < DoxygenEntity > &doxyList);
|
||||
|
||||
std::list < DoxygenEntity > parse(std::list < Token >::iterator endParsingIndex, TokenList & tokList);
|
||||
std::list < DoxygenEntity > parseRoot(std::list < Token >::iterator endParsingIndex, TokenList & tokList);
|
||||
std::list < DoxygenEntity > parse(std::list < Token >::iterator endParsingIndex, TokenList & tokList, bool root=false);
|
||||
|
||||
/*
|
||||
* Fill static doxygenCommands and sectionIndicators containers
|
||||
|
|
|
|||
|
|
@ -16,10 +16,11 @@
|
|||
#define TAB_SIZE 8 //current tab size in spaces
|
||||
//TODO {@link} {@linkplain} {@docRoot}, and other useful doxy commands that are not a javadoc tag
|
||||
|
||||
// define static escape table, it is filled in JavaDocConverter's constructor
|
||||
// define static tables, they are filled in JavaDocConverter's constructor
|
||||
std::map<std::string, std::string> JavaDocConverter::escapeTable;
|
||||
std::map<std::string, JavaDocConverter::tagHandler> JavaDocConverter::tagHandlers;
|
||||
|
||||
void JavaDocConverter::fillEscapeTable() {
|
||||
void JavaDocConverter::fillStaticTables() {
|
||||
if (escapeTable.size()) // fill only once
|
||||
return;
|
||||
|
||||
|
|
@ -28,48 +29,47 @@ void JavaDocConverter::fillEscapeTable() {
|
|||
escapeTable["\""] = """;
|
||||
escapeTable["<"] = "<";
|
||||
escapeTable[">"] = ">";
|
||||
|
||||
// these commands insert HTML tags
|
||||
tagHandlers["c"] = &handleTagC;
|
||||
tagHandlers["b"] = &handleTagB;
|
||||
// these commands insert just a single char, some of them need to be escaped
|
||||
tagHandlers["$"] = &handleTagChar;
|
||||
tagHandlers["@"] = &handleTagChar;
|
||||
tagHandlers["\\"] = &handleTagChar;
|
||||
tagHandlers["<"] = &handleTagChar;
|
||||
tagHandlers[">"] = &handleTagChar;
|
||||
tagHandlers["&"] = &handleTagChar;
|
||||
tagHandlers["#"] = &handleTagChar;
|
||||
tagHandlers["%"] = &handleTagChar;
|
||||
tagHandlers["~"] = &handleTagChar;
|
||||
tagHandlers["\""] = &handleTagChar;
|
||||
tagHandlers["."] = &handleTagChar;
|
||||
tagHandlers["::"] = &handleTagChar;
|
||||
// these commands are stripped out
|
||||
tagHandlers["brief"] = &handleParagraph;
|
||||
tagHandlers["details"] = &handleParagraph;
|
||||
tagHandlers["partofdescription"] = &handleParagraph;
|
||||
// these commands are kept as-is, they are supported by JavaDoc
|
||||
tagHandlers["sa"] = &handleTagSeeAll;
|
||||
tagHandlers["see"] = &handleTagSame;
|
||||
tagHandlers["param"] = &handleTagSame;
|
||||
tagHandlers["return"] = &handleTagSame;
|
||||
tagHandlers["throws"] = &handleTagSame;
|
||||
tagHandlers["throw"] = &handleTagThrow;
|
||||
tagHandlers["author"] = &handleTagSame;
|
||||
tagHandlers["since"] = &handleTagSame;
|
||||
tagHandlers["version"] = &handleTagSame;
|
||||
tagHandlers["exception"] = &handleTagSame;
|
||||
tagHandlers["deprecated"] = &handleTagSame;
|
||||
// this command just prints it's contents
|
||||
// (it is internal command of swig's parser, contains plain text)
|
||||
tagHandlers["plainstd::string"] = &handlePlainString;
|
||||
}
|
||||
|
||||
|
||||
JavaDocConverter::JavaDocConverter() : debug(false) {
|
||||
|
||||
fillEscapeTable();
|
||||
|
||||
// these commands insert HTML tags
|
||||
tagHandlers["c"] = &handleTagC;
|
||||
tagHandlers["b"] = &handleTagB;
|
||||
// these commands insert just a single char, all of them need to be escaped
|
||||
tagHandlers["$"] = &handleTagChar;
|
||||
tagHandlers["@"] = &handleTagChar;
|
||||
tagHandlers["\\"] = &handleTagChar;
|
||||
tagHandlers["<"] = &handleTagChar;
|
||||
tagHandlers[">"] = &handleTagChar;
|
||||
tagHandlers["&"] = &handleTagChar;
|
||||
tagHandlers["#"] = &handleTagChar;
|
||||
tagHandlers["%"] = &handleTagChar;
|
||||
tagHandlers["~"] = &handleTagChar;
|
||||
tagHandlers["\""] = &handleTagChar;
|
||||
tagHandlers["."] = &handleTagChar;
|
||||
tagHandlers["::"] = &handleTagChar;
|
||||
// these commands are stripped out
|
||||
tagHandlers["brief"] = &handleTagStrip;
|
||||
tagHandlers["details"] = &handleTagStrip;
|
||||
tagHandlers["partofdescription"] = &handleTagStrip;
|
||||
// these commands are kept as-is, they are supported by JavaDoc
|
||||
tagHandlers["sa"] = &handleTagSeeAll;
|
||||
tagHandlers["see"] = &handleTagSame;
|
||||
tagHandlers["param"] = &handleTagSame;
|
||||
tagHandlers["return"] = &handleTagSame;
|
||||
tagHandlers["throws"] = &handleTagSame;
|
||||
tagHandlers["throw"] = &handleTagThrow;
|
||||
tagHandlers["author"] = &handleTagSame;
|
||||
tagHandlers["since"] = &handleTagSame;
|
||||
tagHandlers["version"] = &handleTagSame;
|
||||
tagHandlers["exception"] = &handleTagSame;
|
||||
tagHandlers["deprecated"] = &handleTagSame;
|
||||
// this command just prints it's contents
|
||||
// (it is internal command of swig's parser, contains plain text)
|
||||
tagHandlers["plainstd::string"] = &handleTagData;
|
||||
fillStaticTables();
|
||||
}
|
||||
|
||||
std::string JavaDocConverter::formatCommand(std::string unformattedLine, int indent) {
|
||||
|
|
@ -136,10 +136,10 @@ void JavaDocConverter::translateEntity(DoxygenEntity& tag, std::string& translat
|
|||
}
|
||||
|
||||
void JavaDocConverter::handleTagC(JavaDocConverter* converter, DoxygenEntity& tag, std::string& translatedComment) {
|
||||
translatedComment += "<tt>" + tag.data + "</tt>";
|
||||
translatedComment += "<tt>" + tag.data + "</tt> ";
|
||||
}
|
||||
void JavaDocConverter::handleTagB(JavaDocConverter* converter, DoxygenEntity& tag, std::string& translatedComment) {
|
||||
translatedComment += "<b>" + tag.data + "</b>";
|
||||
translatedComment += "<b>" + tag.data + "</b> ";
|
||||
}
|
||||
void JavaDocConverter::handleTagThrow(JavaDocConverter* converter, DoxygenEntity& tag, std::string& translatedComment) {
|
||||
tag.typeOfEntity = "throws";
|
||||
|
|
@ -159,10 +159,10 @@ void JavaDocConverter::handleTagChar(JavaDocConverter* converter, DoxygenEntity&
|
|||
void JavaDocConverter::handleTagSame(JavaDocConverter* converter, DoxygenEntity& tag, std::string& translatedComment) {
|
||||
translatedComment += converter->formatCommand(std::string("@" + tag.typeOfEntity + "\t" + converter->translateSubtree(tag)), 2);
|
||||
}
|
||||
void JavaDocConverter::handleTagStrip(JavaDocConverter* converter, DoxygenEntity& tag, std::string& translatedComment) {
|
||||
void JavaDocConverter::handleParagraph(JavaDocConverter* converter, DoxygenEntity& tag, std::string& translatedComment) {
|
||||
translatedComment += converter->formatCommand(converter->translateSubtree(tag), 0);
|
||||
}
|
||||
void JavaDocConverter::handleTagData(JavaDocConverter* converter, DoxygenEntity& tag, std::string& translatedComment) {
|
||||
void JavaDocConverter::handlePlainString(JavaDocConverter* converter, DoxygenEntity& tag, std::string& translatedComment) {
|
||||
translatedComment += tag.data + " ";
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -53,17 +53,17 @@ protected:
|
|||
/*
|
||||
* Print only the content and strip original tag
|
||||
*/
|
||||
static void handleTagStrip(JavaDocConverter *converter, DoxygenEntity &tag, std::string &translatedComment);
|
||||
static void handleParagraph(JavaDocConverter *converter, DoxygenEntity &tag, std::string &translatedComment);
|
||||
/*
|
||||
* Print only data part of code
|
||||
*/
|
||||
static void handleTagData(JavaDocConverter *converter, DoxygenEntity &tag, std::string &translatedComment);
|
||||
static void handlePlainString(JavaDocConverter *converter, DoxygenEntity &tag, std::string &translatedComment);
|
||||
|
||||
private:
|
||||
bool debug;
|
||||
std::map<std::string, tagHandler> tagHandlers;
|
||||
static std::map<std::string, tagHandler> tagHandlers;
|
||||
static std::map<std::string, std::string> escapeTable;
|
||||
void fillEscapeTable();
|
||||
void fillStaticTables();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue