@typedproject/ts-doc
Version:
Generate documentation in markdown for TypeScript API
72 lines (59 loc) • 1.89 kB
JavaScript
;
const globby = require("globby");
const path = require("path");
const chalk = require("chalk");
const logger = require("fancy-log");
const {render} = require("../render/render");
const {context} = require("../context");
const {trim} = require("../utils/trim");
const {DocParser} = require("../parsers/DocParser");
const {DocFile} = require("../models/DocFile");
module.exports = {
/**
*
* @param directory
*/
scanComponents(directory) {
context.logger("Scan components '" + chalk.cyan(directory) + "'");
const files = globby.sync(path.join(directory, "**/*.ejs"));
files.forEach((file) => {
const component = require(file.replace(".ejs", ".js"));
context.components[component.name] = (...args) => {
const content = render(file, component.method(...args));
if (component.trim) {
return trim(content);
}
return "\n" + content + "\n";
};
context.logger("Import component '" + chalk.cyan(path.basename(file)) + "'");
});
return files;
},
/**
*
*/
scanTemplate(templatePattern) {
context.logger("Scan template directory '" + chalk.cyan(templatePattern) + "'");
let files = globby.sync(templatePattern);
return files.filter((file) => file.indexOf("/_build") === -1);
},
/**
*
* @param patterns
*/
scanFiles(patterns) {
context.logger("Scan folders '" + chalk.cyan(JSON.stringify(patterns)) + "'");
let symbolsSize = 0;
globby.sync(patterns).forEach((file) => {
try {
DocParser.parse(new DocFile(file)).forEach((symbol) => {
context.logger(`Scanned symbol '${chalk.cyan(symbol.symbolName)}'`);
symbolsSize++;
});
} catch (er) {
context.logger.error(chalk.red(er), er.stack);
}
});
context.logger(`${chalk.green(symbolsSize)} scanned symbols`);
}
};