formatting fixes after running make beautify plus a few manual formatting fixes
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2008-cherylfoil@11699 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
ad9eb0e0bb
commit
19d90026ef
17 changed files with 1805 additions and 1729 deletions
|
|
@ -14,25 +14,25 @@
|
|||
#include <iostream>
|
||||
|
||||
//TODO {@link} {@linkplain} {@docRoot}, and other useful doxy commands that are not a pydoc tag
|
||||
PyDocConverter::PyDocConverter(){
|
||||
debug = 1;
|
||||
PyDocConverter::PyDocConverter() {
|
||||
debug = 1;
|
||||
}
|
||||
|
||||
std::string PyDocConverter::formatParam(Node *n, DoxygenEntity &doxygenEntity) {
|
||||
std::string PyDocConverter::formatParam(Node *n, DoxygenEntity & doxygenEntity) {
|
||||
ParmList *plist = CopyParmList(Getattr(n, "parms"));
|
||||
Parm *p = NULL;
|
||||
|
||||
DoxygenEntity& paramNameEntity = *doxygenEntity.entityList.begin();
|
||||
DoxygenEntity& paramDescriptionEntity = *(++doxygenEntity.entityList.begin());
|
||||
|
||||
|
||||
DoxygenEntity & paramNameEntity = *doxygenEntity.entityList.begin();
|
||||
DoxygenEntity & paramDescriptionEntity = *(++doxygenEntity.entityList.begin());
|
||||
|
||||
std::string result;
|
||||
std::string paramDescription = justifyString(paramDescriptionEntity.data, DOC_PARAM_STRING_LENGTH);
|
||||
|
||||
|
||||
for (p = plist; p;) {
|
||||
if(Char(Getattr(p, "name")) == paramNameEntity.data) {
|
||||
if (Char(Getattr(p, "name")) == paramNameEntity.data) {
|
||||
std::string name = Char(Swig_name_make(n, 0, Getattr(p, "name"), 0, 0));
|
||||
std::string type = Char(Swig_name_make(n, 0, Getattr(p, "type"), 0, 0));
|
||||
|
||||
|
||||
result = name + " (" + type + ") ";
|
||||
result.resize(DOC_PARAM_STRING_LENGTH - 3, ' ');
|
||||
result += "-- " + paramDescription.substr(DOC_PARAM_STRING_LENGTH);
|
||||
|
|
@ -45,162 +45,158 @@ std::string PyDocConverter::formatParam(Node *n, DoxygenEntity &doxygenEntity) {
|
|||
return result;
|
||||
}
|
||||
|
||||
std::string PyDocConverter::formatReturnDescription(Node *node, DoxygenEntity &doxygenEntity){
|
||||
std::string PyDocConverter::formatReturnDescription(Node *node, DoxygenEntity & doxygenEntity) {
|
||||
#pragma unused(node)
|
||||
return "\nResult:\n" + justifyString(translateSubtree(doxygenEntity));
|
||||
}
|
||||
|
||||
std::string PyDocConverter::justifyString(std::string documentString, int indent, int maxWidth){
|
||||
std::string PyDocConverter::justifyString(std::string documentString, int indent, int maxWidth) {
|
||||
std::ostringstream formattedString;
|
||||
std::string currentLine;
|
||||
|
||||
for(std::string::iterator stringPosition = documentString.begin(); stringPosition != documentString.end(); ++stringPosition)
|
||||
{
|
||||
if(currentLine.length() == 0)
|
||||
|
||||
for (std::string::iterator stringPosition = documentString.begin(); stringPosition != documentString.end(); ++stringPosition) {
|
||||
if (currentLine.length() == 0)
|
||||
currentLine.resize(indent, ' ');
|
||||
|
||||
|
||||
currentLine += *stringPosition;
|
||||
|
||||
if(*stringPosition == ' ' && (int)currentLine.size() >= maxWidth || (stringPosition + 1) == documentString.end())
|
||||
{
|
||||
|
||||
if (*stringPosition == ' ' && (int) currentLine.size() >= maxWidth || (stringPosition + 1) == documentString.end()) {
|
||||
formattedString << currentLine << std::endl;
|
||||
currentLine = "";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return formattedString.str();
|
||||
}
|
||||
|
||||
std::string PyDocConverter::translateSubtree( DoxygenEntity &doxygenEntity){
|
||||
std::string PyDocConverter::translateSubtree(DoxygenEntity & doxygenEntity) {
|
||||
std::string returnedString;
|
||||
if (doxygenEntity.isLeaf)
|
||||
return doxygenEntity.data + " ";
|
||||
else {
|
||||
returnedString += doxygenEntity.data;
|
||||
std::list<DoxygenEntity>::iterator p = doxygenEntity.entityList.begin();
|
||||
while (p != doxygenEntity.entityList.end()){
|
||||
returnedString+= translateSubtree(*p);
|
||||
std::list < DoxygenEntity >::iterator p = doxygenEntity.entityList.begin();
|
||||
while (p != doxygenEntity.entityList.end()) {
|
||||
returnedString += translateSubtree(*p);
|
||||
p++;
|
||||
}
|
||||
}
|
||||
return returnedString;
|
||||
}
|
||||
|
||||
std::string PyDocConverter::translateEntity(Node *n, DoxygenEntity &doxyEntity){
|
||||
if(doxyEntity.typeOfEntity.compare("partofdescription") == 0)
|
||||
std::string PyDocConverter::translateEntity(Node *n, DoxygenEntity & doxyEntity) {
|
||||
if (doxyEntity.typeOfEntity.compare("partofdescription") == 0)
|
||||
return justifyString(std::string(translateSubtree(doxyEntity)), 0);
|
||||
|
||||
|
||||
if ((doxyEntity.typeOfEntity.compare("brief") == 0)
|
||||
||(doxyEntity.typeOfEntity.compare("details") == 0))
|
||||
|| (doxyEntity.typeOfEntity.compare("details") == 0))
|
||||
return justifyString(std::string(translateSubtree(doxyEntity)), 0) + "\n";
|
||||
|
||||
if(doxyEntity.typeOfEntity.compare("plainstd::string") == 0
|
||||
|| doxyEntity.typeOfEntity.compare("deprecated") == 0
|
||||
|| doxyEntity.typeOfEntity.compare("brief") == 0)
|
||||
|
||||
if (doxyEntity.typeOfEntity.compare("plainstd::string") == 0
|
||||
|| doxyEntity.typeOfEntity.compare("deprecated") == 0
|
||||
|| doxyEntity.typeOfEntity.compare("brief") == 0)
|
||||
return justifyString(doxyEntity.data, 0) + "\n";
|
||||
|
||||
if(doxyEntity.typeOfEntity.compare("param") == 0)
|
||||
|
||||
if (doxyEntity.typeOfEntity.compare("param") == 0)
|
||||
return formatParam(n, doxyEntity);
|
||||
|
||||
if(doxyEntity.typeOfEntity.compare("return") == 0)
|
||||
|
||||
if (doxyEntity.typeOfEntity.compare("return") == 0)
|
||||
return formatReturnDescription(n, doxyEntity);
|
||||
|
||||
if(doxyEntity.typeOfEntity.compare("author") == 0
|
||||
|| doxyEntity.typeOfEntity.compare("param") == 0
|
||||
|| doxyEntity.typeOfEntity.compare("since") == 0
|
||||
|| doxyEntity.typeOfEntity.compare("version") == 0
|
||||
|| doxyEntity.typeOfEntity.compare("exception") == 0
|
||||
|| doxyEntity.typeOfEntity.compare("deprecated") == 0
|
||||
|| doxyEntity.typeOfEntity.compare("sa") == 0)
|
||||
if (doxyEntity.typeOfEntity.compare("author") == 0
|
||||
|| doxyEntity.typeOfEntity.compare("param") == 0
|
||||
|| doxyEntity.typeOfEntity.compare("since") == 0
|
||||
|| doxyEntity.typeOfEntity.compare("version") == 0
|
||||
|| doxyEntity.typeOfEntity.compare("exception") == 0
|
||||
|| doxyEntity.typeOfEntity.compare("deprecated") == 0
|
||||
|| doxyEntity.typeOfEntity.compare("sa") == 0)
|
||||
return "";
|
||||
|
||||
return justifyString(doxyEntity.data);
|
||||
}
|
||||
|
||||
std::string PyDocConverter::processEntityList(Node *n, std::list<DoxygenEntity>& entityList){
|
||||
std::string PyDocConverter::processEntityList(Node *n, std::list < DoxygenEntity > &entityList) {
|
||||
std::string result;
|
||||
bool inParamsSection = false;
|
||||
|
||||
for(std::list<DoxygenEntity>::iterator entityIterator = entityList.begin(); entityIterator != entityList.end();){
|
||||
if(entityIterator->typeOfEntity.compare("param") == 0 && !inParamsSection){
|
||||
|
||||
for (std::list < DoxygenEntity >::iterator entityIterator = entityList.begin(); entityIterator != entityList.end();) {
|
||||
if (entityIterator->typeOfEntity.compare("param") == 0 && !inParamsSection) {
|
||||
inParamsSection = true;
|
||||
result += "\nArguments:\n";
|
||||
}
|
||||
else if(entityIterator->typeOfEntity.compare("param") != 0 && inParamsSection)
|
||||
} else if (entityIterator->typeOfEntity.compare("param") != 0 && inParamsSection)
|
||||
inParamsSection = false;
|
||||
|
||||
|
||||
result += translateEntity(n, *entityIterator);
|
||||
entityIterator++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
bool PyDocConverter::getDocumentation(Node *n, String *&documentation){
|
||||
bool PyDocConverter::getDocumentation(Node *n, String *&documentation) {
|
||||
std::string pyDocString, result;
|
||||
|
||||
|
||||
// for overloaded functions we must concat documentation for underlying overloads
|
||||
if(Checkattr(n, "kind", "function") && Getattr(n, "sym:overloaded")){
|
||||
if (Checkattr(n, "kind", "function") && Getattr(n, "sym:overloaded")) {
|
||||
// rewind to the first overload
|
||||
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 = Getattr(n,"DoxygenComment");
|
||||
if(!Swig_is_generated_overload(n) && documentation){
|
||||
std::list<DoxygenEntity> entityList = DoxygenParser().createTree(Char(documentation));
|
||||
while (n) {
|
||||
documentation = Getattr(n, "DoxygenComment");
|
||||
if (!Swig_is_generated_overload(n) && documentation) {
|
||||
std::list < DoxygenEntity > entityList = DoxygenParser().createTree(Char(documentation));
|
||||
allDocumentation.push_back(processEntityList(n, entityList));
|
||||
}
|
||||
n = Getattr(n, "sym:nextSibling");
|
||||
}
|
||||
|
||||
|
||||
// construct final documentation string
|
||||
if(allDocumentation.size() > 1){
|
||||
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();
|
||||
concatDocString << "Overload " << (realOverloadCount + 1) << ":" << std::endl;
|
||||
concatDocString << generateDivider();
|
||||
concatDocString << allDocumentation[realOverloadCount] << std::endl;
|
||||
}
|
||||
pyDocString = concatDocString.str();
|
||||
}
|
||||
else if (allDocumentation.size() == 1) {
|
||||
} else if (allDocumentation.size() == 1) {
|
||||
pyDocString = *(allDocumentation.begin());
|
||||
}
|
||||
}
|
||||
}
|
||||
// for other nodes just process as normal
|
||||
else {
|
||||
documentation = Getattr(n,"DoxygenComment");
|
||||
if(documentation != NULL){
|
||||
std::list<DoxygenEntity> entityList = DoxygenParser().createTree(Char(documentation));
|
||||
documentation = Getattr(n, "DoxygenComment");
|
||||
if (documentation != NULL) {
|
||||
std::list < DoxygenEntity > entityList = DoxygenParser().createTree(Char(documentation));
|
||||
pyDocString = processEntityList(n, entityList);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// if we got something log the result and construct DOH string to return
|
||||
if(pyDocString.length()) {
|
||||
if (pyDocString.length()) {
|
||||
result = "\"\"\"\n" + pyDocString + "\"\"\"\n";
|
||||
|
||||
if(debug){
|
||||
|
||||
if (debug) {
|
||||
std::cout << "\n---RESULT IN PYDOC---" << std::endl;
|
||||
std::cout << result;
|
||||
std::cout << std::endl;
|
||||
}
|
||||
|
||||
|
||||
documentation = NewString(result.c_str());
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
std::string PyDocConverter::generateDivider(){
|
||||
std::string PyDocConverter::generateDivider() {
|
||||
std::ostringstream dividerString;
|
||||
for(int i = 0; i < DOC_STRING_LENGTH; i++)
|
||||
for (int i = 0; i < DOC_STRING_LENGTH; i++)
|
||||
dividerString << '-';
|
||||
dividerString << std::endl;
|
||||
return dividerString.str();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue