UNPKG

@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
"use strict"; 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