@ng-doc/builder
Version:
<!-- PROJECT LOGO --> <br /> <div align="center"> <a href="https://github.com/ng-doc/ng-doc"> <img src="https://ng-doc.com/assets/images/ng-doc.svg?raw=true" alt="Logo" height="150px"> </a>
121 lines • 3.78 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.Formatter = void 0;
exports.getJsDocDescription = getJsDocDescription;
exports.getJsDocTag = getJsDocTag;
exports.getJsDocTags = getJsDocTags;
exports.getAllJsDocTags = getAllJsDocTags;
exports.hasJsDocTag = hasJsDocTag;
exports.getJsDocParam = getJsDocParam;
const tsdoc_1 = require("@microsoft/tsdoc");
const tsdoc_2 = require("@microsoft/tsdoc");
const core_1 = require("@ng-doc/core");
const markdown_to_html_1 = require("./markdown-to-html");
class Formatter {
static renderDocNode(docNode) {
let result = '';
if (docNode) {
if (docNode instanceof tsdoc_2.DocExcerpt) {
result += docNode.content.toString();
}
for (const childNode of docNode.getChildNodes()) {
result += Formatter.renderDocNode(childNode);
}
}
return result;
}
static renderDocNodes(docNodes) {
let result = '';
for (const docNode of docNodes) {
result += Formatter.renderDocNode(docNode);
}
return result;
}
}
exports.Formatter = Formatter;
/**
*
* @param node
*/
function getJsDocDescription(node) {
const jsDocs = (0, core_1.asArray)(node.getJsDocs()[0]);
const tsdocParser = new tsdoc_1.TSDocParser();
const parserContext = tsdocParser.parseString(jsDocs[0]?.getText() ?? '');
return (0, markdown_to_html_1.markdownToHtml)(Formatter.renderDocNodes(parserContext.docComment.summarySection.getChildNodes())).trim();
}
/**
*
* @param node
* @param tagName
*/
function getJsDocTag(node, tagName) {
const jsDocs = (0, core_1.asArray)(node.getJsDocs()[0]);
const tag = jsDocs
.map((doc) => doc.getStructure())
.map((doc) => doc.tags?.find((tag) => tag.tagName === tagName))
.filter(Boolean)
.map((tag) => tag?.text)
.join('');
return (0, markdown_to_html_1.markdownToHtml)(tag).trim();
}
/**
*
* @param node
* @param tagName
*/
function getJsDocTags(node, tagName) {
const jsDocs = (0, core_1.asArray)(node.getJsDocs()[0]);
const tags = jsDocs
.map((doc) => doc.getStructure())
.map((doc) => doc.tags?.filter((tag) => tag.tagName === tagName))
.flat()
.filter(core_1.isPresent)
.map((tag) => tag?.text);
return tags.map((tag) => (0, markdown_to_html_1.markdownToHtml)(String(tag)).trim());
}
/**
*
* @param node
*/
function getAllJsDocTags(node) {
const jsDocs = (0, core_1.asArray)(node.getJsDocs()[0]);
const tags = jsDocs
.map((doc) => doc.getStructure())
.map((doc) => doc.tags)
.flat()
.filter(core_1.isPresent)
.reduce((acc, tag) => {
if (!acc[tag.tagName]) {
acc[tag.tagName] = [];
}
acc[tag.tagName].push(String(tag.text));
return acc;
}, {});
return tags;
}
/**
*
* @param node
* @param tagName
*/
function hasJsDocTag(node, tagName) {
const jsDocs = (0, core_1.asArray)(node.getJsDocs()[0]);
return jsDocs
.map((doc) => doc.getStructure())
.map((doc) => doc.tags?.some((tag) => tag.tagName === tagName))
.filter(core_1.isPresent)
.some(Boolean);
}
/**
*
* @param node
* @param paramName
*/
function getJsDocParam(node, paramName) {
const jsDocs = (0, core_1.asArray)(node.getJsDocs()[0]);
const tsdocParser = new tsdoc_1.TSDocParser();
const parserContext = tsdocParser.parseString(jsDocs[0]?.getText() ?? '');
const param = Formatter.renderDocNodes(parserContext.docComment.params.tryGetBlockByName(paramName)?.getChildNodes() ?? []);
return (0, markdown_to_html_1.markdownToHtml)(param).trim();
}
//# sourceMappingURL=get-js-doc.js.map
;