node/tools/eslint/node_modules/comment-parser/lib/parser/block-parser.cjs
Michaël Zasso 2eff28fb7a
tools: move ESLint to tools/eslint
Greatly simplify how ESLint and its plugins are installed.

PR-URL: https://github.com/nodejs/node/pull/53413
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
2024-06-19 19:54:08 +00:00

44 lines
985 B
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
const reTag = /^@\S+/;
/**
* Creates configured `Parser`
* @param {Partial<Options>} options
*/
function getParser({
fence = '```'
} = {}) {
const fencer = getFencer(fence);
const toggleFence = (source, isFenced) => fencer(source) ? !isFenced : isFenced;
return function parseBlock(source) {
// start with description section
const sections = [[]];
let isFenced = false;
for (const line of source) {
if (reTag.test(line.tokens.description) && !isFenced) {
sections.push([line]);
} else {
sections[sections.length - 1].push(line);
}
isFenced = toggleFence(line.tokens.description, isFenced);
}
return sections;
};
}
exports.default = getParser;
function getFencer(fence) {
if (typeof fence === 'string') return source => source.split(fence).length % 2 === 0;
return fence;
}
//# sourceMappingURL=block-parser.cjs.map