add support for unicode regexes - closes #11
This commit is contained in:
@@ -60,6 +60,7 @@ It's as easy as:
|
||||
- [Rest parameters](FEATURES.md#rest-parameters)
|
||||
- [Spread](FEATURES.md#spread)
|
||||
- [Template literals](FEATURES.md#template-literals)
|
||||
- [Unicode Regex](FEATURES.md#unicode-regex)
|
||||
|
||||
To be implemented:
|
||||
|
||||
@@ -243,6 +244,7 @@ limitations in ES5 implementations.
|
||||
| Rest parameters | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
|
||||
| Spread | ✓ | ✓ | ✓ | ✓ | ✓ | |
|
||||
| Template literals | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
|
||||
| Unicode regex | ✓ | ✓ | | ✓ | ✓ | |
|
||||
|
||||
#### Performance
|
||||
|
||||
|
||||
@@ -107,5 +107,6 @@ transform.transformers = {
|
||||
blockBinding: require("./transformers/block-binding"),
|
||||
modules: require("./transformers/modules"),
|
||||
restParameters: require("./transformers/rest-parameters"),
|
||||
forOf: require("./transformers/for-of")
|
||||
forOf: require("./transformers/for-of"),
|
||||
unicodeRegex: require("./transformers/unicode-regex")
|
||||
};
|
||||
|
||||
15
lib/6to5/transformers/unicode-regex.js
Normal file
15
lib/6to5/transformers/unicode-regex.js
Normal file
@@ -0,0 +1,15 @@
|
||||
var regexpu = require("regexpu");
|
||||
var b = require("ast-types").builders;
|
||||
var _ = require("lodash");
|
||||
|
||||
exports.Literal = function (node) {
|
||||
var regex = node.regex;
|
||||
if (!regex) return;
|
||||
|
||||
var flags = regex.flags.split("")
|
||||
if (!_.contains(regex.flags, "u")) return;
|
||||
_.pull(flags, "u");
|
||||
|
||||
var pattern = regexpu.rewritePattern(regex.pattern, regex.flags);
|
||||
return b.literal(new RegExp(pattern, flags.join("")));
|
||||
};
|
||||
@@ -46,7 +46,8 @@
|
||||
"lodash": "2.4.1",
|
||||
"mkdirp": "0.5.0",
|
||||
"es6-shim": "^0.18.0",
|
||||
"es6-symbol": "^0.1.1"
|
||||
"es6-symbol": "^0.1.1",
|
||||
"regexpu": "^0.2.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"es6-transpiler": "0.7.17",
|
||||
|
||||
2
test/fixtures/unicode-regex/basic/actual.js
vendored
Normal file
2
test/fixtures/unicode-regex/basic/actual.js
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
var string = 'foo💩bar';
|
||||
var match = string.match(/foo(.)bar/u);
|
||||
2
test/fixtures/unicode-regex/basic/expected.js
vendored
Normal file
2
test/fixtures/unicode-regex/basic/expected.js
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
var string = 'foo\uD83D\uDCA9bar';
|
||||
var match = string.match(/foo((?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uDC00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF]))bar/);
|
||||
Reference in New Issue
Block a user