Skip to content

Commit 997a25d

Browse files
silentroachBrainMaestro
authored andcommitted
Preserve original regexp flags order (#3)
Regexp flags order isn't important, so it is better to use real regexp instead of its string representation.
1 parent 98a5c9e commit 997a25d

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

lib/rules/optimize-regex.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
'use strict';
77

8-
const { optimize } = require('regexp-tree');
8+
const { parse, generate, optimize } = require('regexp-tree');
99

1010
//------------------------------------------------------------------------------
1111
// Rule Definition
@@ -40,9 +40,26 @@ module.exports = {
4040
return;
4141
}
4242

43+
let parsedSource;
44+
try {
45+
parsedSource = parse(value);
46+
} catch (e) {
47+
context.report({
48+
node,
49+
message: '{{original}} can\'t be parsed: {{message}}',
50+
data: {
51+
original: value,
52+
message: e.message
53+
}
54+
});
55+
56+
return;
57+
}
58+
59+
const originalRegex = generate(parsedSource).toString();
4360
const optimizedRegex = optimize(value).toString();
4461

45-
if (value === optimizedRegex) {
62+
if (originalRegex === optimizedRegex) {
4663
return;
4764
}
4865

tests/lib/rules/optimize-regex.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ var rule = require('../../../lib/rules/optimize-regex'),
1414

1515
var ruleTester = new RuleTester();
1616
ruleTester.run('optimize-regex', rule, {
17-
valid: ['var foo = /foo/i'],
17+
valid: [
18+
'var foo = /foo/i',
19+
'var foo = /foo/mig'
20+
],
1821

1922
invalid: [
2023
{

0 commit comments

Comments
 (0)