|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- "use strict";
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- const primitives_1 = require("../primitives.cjs");
-
- const util_1 = require("../util.cjs");
-
- function getParser({
- startLine = 0
- } = {}) {
- let block = null;
- let num = startLine;
- return function parseSource(source) {
- let rest = source;
- const tokens = util_1.seedTokens();
- [tokens.lineEnd, rest] = util_1.splitCR(rest);
- [tokens.start, rest] = util_1.splitSpace(rest);
-
- if (block === null && rest.startsWith(primitives_1.Markers.start) && !rest.startsWith(primitives_1.Markers.nostart)) {
- block = [];
- tokens.delimiter = rest.slice(0, primitives_1.Markers.start.length);
- rest = rest.slice(primitives_1.Markers.start.length);
- [tokens.postDelimiter, rest] = util_1.splitSpace(rest);
- }
-
- if (block === null) {
- num++;
- return null;
- }
-
- const isClosed = rest.trimRight().endsWith(primitives_1.Markers.end);
-
- if (tokens.delimiter === '' && rest.startsWith(primitives_1.Markers.delim) && !rest.startsWith(primitives_1.Markers.end)) {
- tokens.delimiter = primitives_1.Markers.delim;
- rest = rest.slice(primitives_1.Markers.delim.length);
- [tokens.postDelimiter, rest] = util_1.splitSpace(rest);
- }
-
- if (isClosed) {
- const trimmed = rest.trimRight();
- tokens.end = rest.slice(trimmed.length - primitives_1.Markers.end.length);
- rest = trimmed.slice(0, -primitives_1.Markers.end.length);
- }
-
- tokens.description = rest;
- block.push({
- number: num,
- source,
- tokens
- });
- num++;
-
- if (isClosed) {
- const result = block.slice();
- block = null;
- return result;
- }
-
- return null;
- };
- }
-
- exports.default = getParser;
- //# sourceMappingURL=source-parser.cjs.map
|