voluptatumnemo
Version:
Solidity Documentation Generator
62 lines (48 loc) • 1.52 kB
JavaScript
const enumerable = require("linq");
const i18n = require("../i18n");
const util = require("util");
module.exports = {
build: function(nodes) {
if(!nodes || !nodes.length) {
return "";
}
const builder = [];
builder.push(`## ${i18n.translate("ContractMembers")}`);
builder.push("\n");
builder.push(`**${i18n.translate("ConstantsAndVariables")}**`);
builder.push("\n");
builder.push("\n");
builder.push("```js");
builder.push("\n");
const groups = enumerable.from(nodes).groupBy(function(x) {
return x.visibility.toLowerCase();
}).toArray();
for(let i in groups) {
const group = groups[i];
const key = group.key();
const candidates = enumerable.from(nodes).where(function(x) {
return x.visibility.toLowerCase() === key;
}).toArray();
if(groups.length > 1) {
builder.push(util.format(i18n.translate("VisibilityMembers"), key));
builder.push("\n");
}
for(var j in candidates) {
const node = candidates[j];
const constant = node.constant ? " constant " : " ";
if(!node.typeDescriptions) {
continue;
}
builder.push(`${node.typeDescriptions.typeString} ${node.visibility.toLowerCase()}${constant}${node.name}`);
builder.push(";");
builder.push("\n");
}
builder.push("\n");
}
builder.push("```");
builder.push("\n");
builder.push("\n");
return builder.join("");
}
};
;