114 lines
2.7 KiB
JavaScript
Raw Normal View History

"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