markdown-vetur
Version:
simple parse markdown to vue component description for vetur auto-completion
91 lines • 3.17 kB
JavaScript
;
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