node/tools/eslint/node_modules/comment-parser/lib/parser/index.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

65 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