UNPKG

markdown-vetur

Version:

simple parse markdown to vue component description for vetur auto-completion

91 lines 3.17 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var md_parser_1 = require("./md-parser"); var codegen_1 = require("./codegen"); var fs_1 = require("fs"); var path_1 = require("path"); function parseText(input) { var ast = md_parser_1.default(input); return codegen_1.default(ast); } exports.parseText = parseText; var defaultOptions = { maxDeep: Infinity, tagPrefix: '' }; function parseAndWrite(options) { var _a = parse(options), tags = _a.tags, attributes = _a.attributes; var isExist = fs_1.existsSync(options.outputDir); if (!isExist) { fs_1.mkdirSync(options.outputDir); } fs_1.writeFileSync(path_1.join(options.outputDir, 'tags.json'), JSON.stringify(tags, null, 2)); fs_1.writeFileSync(path_1.join(options.outputDir, 'attributes.json'), JSON.stringify(attributes, null, 2)); } exports.parseAndWrite = parseAndWrite; function parse(options) { options = __assign({}, defaultOptions, options); var result = { tags: {}, attributes: {} }; recursiveParse(options, 0); return result; function recursiveParse(options, deep) { if (deep > options.maxDeep) { return; } deep++; var files = fs_1.readdirSync(options.path); files.forEach(function (item) { var currentPath = path_1.join(options.path.toString(), item); var stats = fs_1.statSync(currentPath); if (stats.isDirectory()) { recursiveParse(__assign({}, options, { path: currentPath }), deep); } else if (stats.isFile() && options.test.test(item)) { var file = fs_1.readFileSync(currentPath); var tags_1 = parseText(file.toString()); if (tags_1['default']) { // one tag putResult(currentPath.split('/').slice(-2)[0], tags_1['default']); } else { Object.keys(tags_1).forEach(function (key) { putResult(key, tags_1[key]); }); } } }); } function putResult(componentName, compoennt) { componentName = options.tagPrefix + componentName; var attributes = Object.keys(compoennt.attributes); var tag = { description: compoennt.description, attributes: attributes }; result.tags[componentName] = tag; attributes.forEach(function (key) { result.attributes[componentName + "/" + key] = compoennt.attributes[key]; }); } } exports.parse = parse; exports.default = { parseAndWrite: parseAndWrite, parse: parse, parseText: parseText }; //# sourceMappingURL=index.js.map