| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = getParser; | |
| const primitives_js_1 = require("../primitives.cjs"); | |
| const util_js_1 = require("../util.cjs"); | |
| const block_parser_js_1 = require("./block-parser.cjs"); | |
| const source_parser_js_1 = require("./source-parser.cjs"); | |
| const spec_parser_js_1 = require("./spec-parser.cjs"); | |
| const tag_js_1 = require("./tokenizers/tag.cjs"); | |
| const type_js_1 = require("./tokenizers/type.cjs"); | |
| const name_js_1 = require("./tokenizers/name.cjs"); | |
| const description_js_1 = require("./tokenizers/description.cjs"); | |
| function getParser({ | |
| startLine = 0, | |
| fence = '```', | |
| spacing = 'compact', | |
| markers = primitives_js_1.Markers, | |
| tokenizers = [(0, tag_js_1.default)(), (0, type_js_1.default)(spacing), (0, name_js_1.default)(), (0, description_js_1.default)(spacing)] | |
| } = {}) { | |
| if (startLine < 0 || startLine % 1 > 0) throw new Error('Invalid startLine'); | |
| const parseSource = (0, source_parser_js_1.default)({ | |
| startLine, | |
| markers | |
| }); | |
| const parseBlock = (0, block_parser_js_1.default)({ | |
| fence | |
| }); | |
| const parseSpec = (0, spec_parser_js_1.default)({ | |
| tokenizers | |
| }); | |
| const joinDescription = (0, description_js_1.getJoiner)(spacing); | |
| return function (source) { | |
| const blocks = []; | |
| for (const line of (0, util_js_1.splitLines)(source)) { | |
| const lines = parseSource(line); | |
| if (lines === null) continue; | |
| const sections = parseBlock(lines); | |
| const specs = sections.slice(1).map(parseSpec); | |
| blocks.push({ | |
| description: joinDescription(sections[0], markers), | |
| tags: specs, | |
| source: lines, | |
| problems: specs.reduce((acc, spec) => acc.concat(spec.problems), []) | |
| }); | |
| } | |
| return blocks; | |
| }; | |
| } | |
| //# sourceMappingURL=index.cjs.map |