Skip to content

Commit 33aa2b2

Browse files
Optimizer: include char unescape to index
1 parent d2a341d commit 33aa2b2

File tree

4 files changed

+21
-3
lines changed

4 files changed

+21
-3
lines changed

src/optimizer/__tests__/optimizer-integration-test.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@ describe('optimizer-integration-test', () => {
2525
.toBe(optimized.toString());
2626
});
2727

28+
it('preserve escape', () => {
29+
const original = /^[\^\*\$\(\)]\^\*\$\(\)$/;
30+
const optimized = /^[^*$()]\^\*\$\(\)$/;
31+
32+
expect(optimizer.optimize(original).toString())
33+
.toBe(optimized.toString());
34+
});
35+
2836
it('whitespace', () => {
2937
const original = /[ \n\r\t\f]+/;
3038
const optimized = /\s+/;

src/optimizer/transforms/__tests__/char-escape-unescape-transform-test.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,18 @@ describe('\e -> e', () => {
1717
expect(re.toString()).toBe(/e\*/.toString());
1818
});
1919

20+
it('preserve escape', () => {
21+
const re = transform(/\*\^\$\(\)\[/, [
22+
charUnescape,
23+
]);
24+
expect(re.toString()).toBe(/\*\^\$\(\)\[/.toString());
25+
});
26+
2027
it('char class', () => {
21-
const re = transform(/[\e\*\(\]\ ]\(\n/, [
28+
const re = transform(/[\e\*\(\]\ \^\$]\(\n/, [
2229
charUnescape,
2330
]);
24-
expect(re.toString()).toBe(/[e*(\] ]\(\n/.toString());
31+
expect(re.toString()).toBe(/[e*(\] ^$]\(\n/.toString());
2532
});
2633

2734
});

src/optimizer/transforms/char-escape-unescape-transform.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,5 @@ function shouldUnescape(path) {
3939
}
4040

4141
function preservesEscape(value) {
42-
return /[*\[()+?]/.test(value);
42+
return /[*\[()+?^$]/.test(value);
4343
}

src/optimizer/transforms/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,7 @@ module.exports = [
2020

2121
// aa* -> a+
2222
require('./char-star-to-plus-transform'),
23+
24+
// \e -> e
25+
require('./char-escape-unescape-transform'),
2326
];

0 commit comments

Comments
 (0)