forked from public/fvtt-cthulhu-eternal
66 lines
1.8 KiB
JavaScript
66 lines
1.8 KiB
JavaScript
"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
|