elearning/Frontend-Learner/node_modules/eslint-plugin-regexp/dist/utils/regexp-ast/common.js
2026-01-13 10:48:02 +07:00

33 lines
1.3 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getFirstConsumedCharPlusAfter = getFirstConsumedCharPlusAfter;
exports.extractCaptures = extractCaptures;
exports.hasCapturingGroup = hasCapturingGroup;
const regexpp_1 = require("@eslint-community/regexpp");
const regexp_ast_analysis_1 = require("regexp-ast-analysis");
function getFirstConsumedCharPlusAfter(element, direction, flags) {
const consumed = (0, regexp_ast_analysis_1.getFirstConsumedChar)(element, direction, flags);
if (!consumed.empty) {
return consumed;
}
return regexp_ast_analysis_1.FirstConsumedChars.concat([consumed, (0, regexp_ast_analysis_1.getFirstConsumedCharAfter)(element, direction, flags)], flags);
}
function extractCaptures(pattern) {
const groups = [];
(0, regexpp_1.visitRegExpAST)(pattern, {
onCapturingGroupEnter(group) {
groups.push(group);
},
});
groups.sort((a, b) => a.start - b.start);
const names = new Set();
for (const group of groups) {
if (group.name !== null) {
names.add(group.name);
}
}
return { groups, names, count: groups.length };
}
function hasCapturingGroup(node) {
return (0, regexp_ast_analysis_1.hasSomeDescendant)(node, (d) => d.type === "CapturingGroup");
}