45 lines
		
	
	
		
			No EOL
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			No EOL
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| diff --git a/lib/rules/no-useless-escape.js b/lib/rules/no-useless-escape.js
 | |
| index 2046a148a17fd1d5f3a4bbc9f45f7700259d11fa..f4898c6b57355a4fd72c43a9f32bf1a36a6ccf4a 100644
 | |
| --- a/lib/rules/no-useless-escape.js
 | |
| +++ b/lib/rules/no-useless-escape.js
 | |
| @@ -97,12 +97,30 @@ module.exports = {
 | |
|              escapeBackslash: "Replace the `\\` with `\\\\` to include the actual backslash character."
 | |
|          },
 | |
|  
 | |
| -        schema: []
 | |
| +        schema: [{
 | |
| +            type: "object",
 | |
| +            properties: {
 | |
| +                extra: {
 | |
| +                    type: "string",
 | |
| +                    default: ""
 | |
| +                },
 | |
| +                extraCharClass: {
 | |
| +                    type: "string",
 | |
| +                    default: ""
 | |
| +                },
 | |
| +            },
 | |
| +            additionalProperties: false
 | |
| +        }]
 | |
|      },
 | |
|  
 | |
|      create(context) {
 | |
| +        const options = context.options[0] || {};
 | |
| +        const { extra, extraCharClass } = options || ''
 | |
|          const sourceCode = context.getSourceCode();
 | |
|  
 | |
| +        const NON_CHARCLASS_ESCAPES = union(REGEX_NON_CHARCLASS_ESCAPES, new Set(extra))
 | |
| +        const CHARCLASS_ESCAPES = union(REGEX_GENERAL_ESCAPES, new Set(extraCharClass))
 | |
| +
 | |
|          /**
 | |
|           * Reports a node
 | |
|           * @param {ASTNode} node The node to report
 | |
| @@ -238,7 +256,7 @@ module.exports = {
 | |
|                      .filter(charInfo => charInfo.escaped)
 | |
|  
 | |
|                      // Filter out characters that are valid to escape, based on their position in the regular expression.
 | |
| -                    .filter(charInfo => !(charInfo.inCharClass ? REGEX_GENERAL_ESCAPES : REGEX_NON_CHARCLASS_ESCAPES).has(charInfo.text))
 | |
| +                    .filter(charInfo => !(charInfo.inCharClass ? CHARCLASS_ESCAPES : NON_CHARCLASS_ESCAPES).has(charInfo.text))
 | |
|  
 | |
|                      // Report all the remaining characters.
 | |
|                      .forEach(charInfo => report(node, charInfo.index, charInfo.text));
 |