"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 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; }; } exports.default = getParser; //# sourceMappingURL=index.cjs.map