Documentation template

This commit is contained in:
copy 2015-01-11 23:28:02 +01:00
parent cfb871bd31
commit 0cd8d709f7

101
docs/template.md.ejs Normal file
View file

@ -0,0 +1,101 @@
<?
function anchorify(str)
{
// how github creates the name attribute for anchors from headlines
str = str.replace(/[()<>.]/g, "");
str = str.replace(/[^a-z0-9_-]+/gi, "-");
str = str.toLowerCase();
return str;
}
docfiles.forEach(function(doc)
{
doc.javadoc.forEach(function(comment)
{
var tags = comment.raw.tags;
comment.tagsByType = comment.raw.tags.reduce(function(result, tag)
{
result[tag.type] = tag;
return result;
}, {});
comment.ignore = "ignore" in comment.tagsByType;
if(comment.name && !comment.ignore)
{
if(comment.isMethod || comment.isFunction)
{
var args = comment.paramTags.map(function(c)
{
return c.joinedTypes + " " + c.name;
}).join(", ");
var returnVal = "";
if(comment.returnTags[0])
{
returnVal = " -> " + comment.returnTags[0].joinedTypes;
}
comment.args = args;
comment.returnVal = returnVal;
comment.longName = comment.name + "(" + comment.args + ")" + comment.returnVal;
?><?= "- [`" + comment.longName + "`](#" + anchorify(comment.longName) + ")\n" ?><?
} else {
?># <?= comment.name + "\n" ?><?
}
}
});
doc.javadoc.forEach(function(comment)
{
if(!comment.ignore)
{
?><?= "\n***\n" ?><?
if(comment.name)
{
if(comment.isMethod || comment.isFunction)
{
?><?= "#### `" + comment.longName + "`\n" ?><?
}
else
{
?><?= "## `" + comment.name + "`\n" ?><?
}
}
?><?= comment.description + "\n" ?><?
if(comment.paramTags.length)
{
?><?= "**Parameters:**\n\n" ?><?
comment.paramTags.forEach(function(paramTag, i)
{
?><?= (i + 1) + ". **`" + paramTag.joinedTypes + "`** " + paramTag.name + " " + (paramTag.description ? " " + paramTag.description : "") + "\n" ?><?
});
}
if(comment.returnTags.length)
{
?><?= "**Returns:**\n\n" ?><?
comment.returnTags.forEach(function(returnTag)
{
?><?= "* **`" + returnTag.joinedTypes + "`** " + returnTag.description + "\n" ?><?
});
}
}
});
?><?= "<!-- " + doc.filename + "-->\n" ?><?
});
?>
<!-- vim: set tabstop=2 shiftwidth=2 softtabstop=2: -->