| "use strict"; |
| |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| exports.rewireSpecs = exports.rewireSource = exports.seedTokens = exports.seedSpec = exports.seedBlock = exports.splitLines = exports.splitSpace = exports.splitCR = exports.hasCR = exports.isSpace = void 0; |
| |
| function isSpace(source) { |
| return /^\s+$/.test(source); |
| } |
| |
| exports.isSpace = isSpace; |
| |
| function hasCR(source) { |
| return /\r$/.test(source); |
| } |
| |
| exports.hasCR = hasCR; |
| |
| function splitCR(source) { |
| const matches = source.match(/\r+$/); |
| return matches == null ? ['', source] : [source.slice(-matches[0].length), source.slice(0, -matches[0].length)]; |
| } |
| |
| exports.splitCR = splitCR; |
| |
| function splitSpace(source) { |
| const matches = source.match(/^\s+/); |
| return matches == null ? ['', source] : [source.slice(0, matches[0].length), source.slice(matches[0].length)]; |
| } |
| |
| exports.splitSpace = splitSpace; |
| |
| function splitLines(source) { |
| return source.split(/\n/); |
| } |
| |
| exports.splitLines = splitLines; |
| |
| function seedBlock(block = {}) { |
| return Object.assign({ |
| description: '', |
| tags: [], |
| source: [], |
| problems: [] |
| }, block); |
| } |
| |
| exports.seedBlock = seedBlock; |
| |
| function seedSpec(spec = {}) { |
| return Object.assign({ |
| tag: '', |
| name: '', |
| type: '', |
| optional: false, |
| description: '', |
| problems: [], |
| source: [] |
| }, spec); |
| } |
| |
| exports.seedSpec = seedSpec; |
| |
| function seedTokens(tokens = {}) { |
| return Object.assign({ |
| start: '', |
| delimiter: '', |
| postDelimiter: '', |
| tag: '', |
| postTag: '', |
| name: '', |
| postName: '', |
| type: '', |
| postType: '', |
| description: '', |
| end: '', |
| lineEnd: '' |
| }, tokens); |
| } |
| |
| exports.seedTokens = seedTokens; |
| /** |
| * Assures Block.tags[].source contains references to the Block.source items, |
| * using Block.source as a source of truth. This is a counterpart of rewireSpecs |
| * @param block parsed coments block |
| */ |
| |
| function rewireSource(block) { |
| const source = block.source.reduce((acc, line) => acc.set(line.number, line), new Map()); |
| |
| for (const spec of block.tags) { |
| spec.source = spec.source.map(line => source.get(line.number)); |
| } |
| |
| return block; |
| } |
| |
| exports.rewireSource = rewireSource; |
| /** |
| * Assures Block.source contains references to the Block.tags[].source items, |
| * using Block.tags[].source as a source of truth. This is a counterpart of rewireSource |
| * @param block parsed coments block |
| */ |
| |
| function rewireSpecs(block) { |
| const source = block.tags.reduce((acc, spec) => spec.source.reduce((acc, line) => acc.set(line.number, line), acc), new Map()); |
| block.source = block.source.map(line => source.get(line.number) || line); |
| return block; |
| } |
| |
| exports.rewireSpecs = rewireSpecs; |
| //# sourceMappingURL=util.cjs.map |