elearning/Frontend-Learner/node_modules/eslint-plugin-regexp/dist/rules/no-useless-range.js
2026-01-13 10:48:02 +07:00

59 lines
2.3 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("../utils");
exports.default = (0, utils_1.createRule)("no-useless-range", {
meta: {
docs: {
description: "disallow unnecessary character ranges",
category: "Best Practices",
recommended: true,
},
fixable: "code",
schema: [],
messages: {
unexpected: "Unexpected unnecessary character ranges. The hyphen is unnecessary.",
},
type: "suggestion",
},
create(context) {
function createVisitor({ node, fixReplaceNode, getRegexpLocation, }) {
return {
onCharacterClassRangeEnter(ccrNode) {
if (ccrNode.min.value !== ccrNode.max.value &&
ccrNode.min.value + 1 !== ccrNode.max.value) {
return;
}
context.report({
node,
loc: getRegexpLocation(ccrNode),
messageId: "unexpected",
fix: fixReplaceNode(ccrNode, () => {
const parent = ccrNode.parent;
const rawBefore = parent.raw.slice(0, ccrNode.start - parent.start);
const rawAfter = parent.raw.slice(ccrNode.end - parent.start);
if (/\\(?:x[\dA-Fa-f]?|u[\dA-Fa-f]{0,3})?$/u.test(rawBefore)) {
return null;
}
let text = ccrNode.min.raw;
if (ccrNode.min.value < ccrNode.max.value) {
if (ccrNode.max.raw === "-") {
text += `\\-`;
}
else {
text += `${ccrNode.max.raw}`;
}
}
if (rawAfter.startsWith("-")) {
text += "\\";
}
return text;
}),
});
},
};
}
return (0, utils_1.defineRegexpVisitor)(context, {
createVisitor,
});
},
});