| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- /**
- * @fileoverview Rule to flag when regex literals are not wrapped in parens
- * @author Matt DuVall <http://www.mattduvall.com>
- */
- "use strict";
- //------------------------------------------------------------------------------
- // Rule Definition
- //------------------------------------------------------------------------------
- module.exports = {
- meta: {
- docs: {
- description: "require parenthesis around regex literals",
- category: "Stylistic Issues",
- recommended: false,
- url: "https://eslint.org/docs/rules/wrap-regex"
- },
- schema: [],
- fixable: "code"
- },
- create(context) {
- const sourceCode = context.getSourceCode();
- return {
- Literal(node) {
- const token = sourceCode.getFirstToken(node),
- nodeType = token.type;
- if (nodeType === "RegularExpression") {
- const source = sourceCode.getTokenBefore(node);
- const ancestors = context.getAncestors();
- const grandparent = ancestors[ancestors.length - 1];
- if (grandparent.type === "MemberExpression" && grandparent.object === node &&
- (!source || source.value !== "(")) {
- context.report({
- node,
- message: "Wrap the regexp literal in parens to disambiguate the slash.",
- fix: fixer => fixer.replaceText(node, `(${sourceCode.getText(node)})`)
- });
- }
- }
- }
- };
- }
- };
|