Skip to content

Commit 16f37ad

Browse files
Merge pull request #263 from deroke/master
Return sort value for UnicodeProperty
2 parents 1d07a5d + 0ab384a commit 16f37ad

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

src/optimizer/transforms/__tests__/char-class-classranges-merge-transform-test.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,11 +159,18 @@ describe('char-class-classranges-merge', () => {
159159
expect(re.toString()).toBe('/[\\ud83d\\ude88-\\ud83d\\ude8a]/u');
160160
});
161161

162+
it('does not combine unicode property chars with \\w chars', () => {
163+
const re = transform('/[\\w\\p{L}]/u', [
164+
charClassClassrangesMerge,
165+
]);
166+
expect(re.toString()).toBe('/[\\w\\p{L}]/u');
167+
});
168+
162169
it('does not combine sequential chars that are nor \\w chars nor char codes', () => {
163170
const re = transform(/[<=>?]/, [
164171
charClassClassrangesMerge,
165172
]);
166173
expect(re.toString()).toBe('/[<=>?]/');
167174
});
168175

169-
});
176+
});

src/optimizer/transforms/char-class-classranges-merge-transform.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ module.exports = {
2424

2525
const metas = [];
2626
// Extract metas
27-
expressions.forEach(expression => {
27+
expressions.forEach((expression) => {
2828
if (isMeta(expression)) {
2929
metas.push(expression.value);
3030
}
@@ -89,7 +89,7 @@ function sortCharClass(a, b) {
8989
}
9090

9191
/**
92-
* @param {Object} expression - Char or ClassRange node
92+
* @param {Object} expression - Char, ClassRange or UnicodeProperty node
9393
* @returns {number}
9494
*/
9595
function getSortValue(expression) {
@@ -105,6 +105,11 @@ function getSortValue(expression) {
105105
}
106106
return expression.codePoint;
107107
}
108+
109+
if (expression.type === 'UnicodeProperty') {
110+
return -1;
111+
}
112+
108113
// ClassRange
109114
return expression.from.codePoint;
110115
}

0 commit comments

Comments
 (0)