]> git.proxmox.com Git - pve-eslint.git/blame - eslint/lib/rules/wrap-regex.js
import 8.41.0 source
[pve-eslint.git] / eslint / lib / rules / wrap-regex.js
CommitLineData
eb39fafa
DC
1/**
2 * @fileoverview Rule to flag when regex literals are not wrapped in parens
3 * @author Matt DuVall <http://www.mattduvall.com>
4 */
5
6"use strict";
7
8//------------------------------------------------------------------------------
9// Rule Definition
10//------------------------------------------------------------------------------
11
34eeec05 12/** @type {import('../shared/types').Rule} */
eb39fafa
DC
13module.exports = {
14 meta: {
15 type: "layout",
16
17 docs: {
8f9d1d4d 18 description: "Require parenthesis around regex literals",
eb39fafa 19 recommended: false,
f2a92ac6 20 url: "https://eslint.org/docs/latest/rules/wrap-regex"
eb39fafa
DC
21 },
22
23 schema: [],
24 fixable: "code",
25
26 messages: {
27 requireParens: "Wrap the regexp literal in parens to disambiguate the slash."
28 }
29 },
30
31 create(context) {
f2a92ac6 32 const sourceCode = context.sourceCode;
eb39fafa
DC
33
34 return {
35
36 Literal(node) {
37 const token = sourceCode.getFirstToken(node),
38 nodeType = token.type;
39
40 if (nodeType === "RegularExpression") {
41 const beforeToken = sourceCode.getTokenBefore(node);
42 const afterToken = sourceCode.getTokenAfter(node);
f2a92ac6 43 const { parent } = node;
eb39fafa 44
f2a92ac6 45 if (parent.type === "MemberExpression" && parent.object === node &&
eb39fafa
DC
46 !(beforeToken && beforeToken.value === "(" && afterToken && afterToken.value === ")")) {
47 context.report({
48 node,
49 messageId: "requireParens",
50 fix: fixer => fixer.replaceText(node, `(${sourceCode.getText(node)})`)
51 });
52 }
53 }
54 }
55 };
56
57 }
58};