UNPKG

markdown-vetur

Version:

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

84 lines 2.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var TITLE_REG = /^(#+)\s+([^\n]*)/; var TABLE_REG = /^\|.+\n\|\s*\-+/; var TD_REG = /\s*`[^`]+`\s*|([^\|`]+)/g; var TABLE_SPLIT_LINE_REG = /^\|\s*-/; function parse(input) { var artical = []; var start = 0; var end = input.length; while (start < end) { var target = input.substr(start); var match = void 0; if ((match = TITLE_REG.exec(target))) { artical.push({ type: 'title', content: match[2], level: match[1].length }); start += match.index + match[0].length; } else if ((match = TABLE_REG.exec(target))) { var _a = tableParse(target.substr(match.index)), table = _a.table, usedLength = _a.usedLength; artical.push({ type: 'table', table: table }); start += match.index + usedLength; } else { start += readLine(target).length + 1; } } return artical; } exports.default = parse; function tableParse(input) { var start = 0; var end = input.length; var table = { head: [], body: [] }; var isHead = true; while (start < end) { var target = input.substr(start); var line = readLine(target); if (!/^\|/.test(target)) { break; } if (TABLE_SPLIT_LINE_REG.test(target)) { isHead = false; } else if (isHead) { // temp do nothing } else { table.body.push(line .trim() .match(TD_REG) .map(function (i) { if (i.indexOf('|') !== 0) { return i .trim() .toLowerCase() .split('|') .map(function (s) { return s.trim(); }) .join('|'); } return i.trim(); })); } start += line.length + 1; } return { table: table, usedLength: start }; } function readLine(input) { var end = input.indexOf('\n'); return input.substr(0, end !== -1 ? end : input.length); } //# sourceMappingURL=md-parser.js.map