@solarity/hardhat-markup
Version:
Customizable markdown smart contracts documentation
95 lines • 3.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MDFactory = void 0;
const constants_1 = require("./constants");
const json2md = require("json2md");
class MDFactory {
constructor() {
this.contractTags = [];
}
addHeaderTag(headerContent, headerSize = constants_1.TOPIC_H_SIZE) {
this.contractTags.push(this.createHeaderTag(headerContent, headerSize));
}
addPlainText(plainTextContent) {
this.contractTags.push(plainTextContent);
}
addParagraphTag(pContent) {
this.contractTags.push(this.createParagraphTag(pContent));
}
addUlTag(ulContent) {
this.contractTags.push(this.createUlTag(ulContent));
}
addOlTag(olContent) {
this.contractTags.push(this.createOlTag(olContent));
}
addTableTag(headers, rows, aligns = [], isPretty = true) {
this.contractTags.push(this.createTableTag(headers, rows, aligns, isPretty));
}
addCodeTag(codeContent, language = constants_1.DEFAULT_CODE_LANGUAGE) {
this.contractTags.push(this.createCodeTag(codeContent, language));
}
getContractTagsStr() {
return json2md(this.contractTags);
}
getInlineCodeStr(str) {
return `\`${str}\``;
}
getBoldStr(str) {
return `**${str}**`;
}
createHeaderTag(headerContent, headerSize) {
switch (Number(headerSize)) {
case 1:
return { h1: headerContent };
case 2:
return { h2: headerContent };
case 3:
return { h3: headerContent };
case 4:
return { h4: headerContent };
case 5:
return { h5: headerContent };
case 6:
return { h6: headerContent };
default:
throw new Error("Invalid header size number");
}
}
createParagraphTag(pContent) {
return { p: pContent };
}
createUlTag(ulContent) {
return { ul: ulContent };
}
createOlTag(olContent) {
return { ol: olContent };
}
createTableTag(headers, rows, aligns, isPretty) {
rows.forEach((row) => {
if (row.length != headers.length) {
throw new Error(`Failed to create Table tag. Expected ${headers.length} columns, actual - ${row.length} columns in ${row} row`);
}
});
const alignments = headers.map((_, index) => {
return aligns && aligns[index] ? aligns[index] : constants_1.DEFAULT_TABLE_ALIGN;
});
return {
table: {
headers: headers,
rows: rows,
pretty: isPretty,
aligns: alignments,
},
};
}
createCodeTag(codeContent, language) {
return {
code: {
language: language,
content: codeContent,
},
};
}
}
exports.MDFactory = MDFactory;
//# sourceMappingURL=MDFactory.js.map