Import babel-plugin-transform-unicode-property-regex (#6499)
* Import babel-plugin-transform-unicode-property-regex Original: https://github.com/mathiasbynens/babel-plugin-transform-unicode-property-regex Moving it into the official Babel repository makes it easier to maintain the transform. * Update package.json * Update README.md * fixup * fixup 2
This commit is contained in:
parent
1b4307205e
commit
5d4c736413
@ -45,7 +45,7 @@
|
||||
"@babel/plugin-transform-object-rest-spread": "7.0.0-beta.3",
|
||||
"@babel/plugin-transform-optional-catch-binding": "7.0.0-beta.3",
|
||||
"@babel/plugin-transform-regenerator": "7.0.0-beta.3",
|
||||
"babel-plugin-transform-unicode-property-regex": "^2.0.5",
|
||||
"@babel/plugin-transform-unicode-property-regex": "7.0.0-beta.3",
|
||||
"browserslist": "^2.4.0",
|
||||
"invariant": "^2.2.2",
|
||||
"semver": "^5.3.0"
|
||||
|
||||
@ -33,5 +33,5 @@ export default {
|
||||
"transform-object-rest-spread": require("@babel/plugin-transform-object-rest-spread"),
|
||||
"transform-optional-catch-binding": require("@babel/plugin-transform-optional-catch-binding"),
|
||||
"transform-regenerator": require("@babel/plugin-transform-regenerator"),
|
||||
"transform-unicode-property-regex": require("babel-plugin-transform-unicode-property-regex"),
|
||||
"transform-unicode-property-regex": require("@babel/plugin-transform-unicode-property-regex"),
|
||||
};
|
||||
|
||||
@ -0,0 +1,55 @@
|
||||
# @babel/plugin-transform-unicode-property-regex
|
||||
|
||||
Compile [Unicode property escapes](https://github.com/mathiasbynens/regexpu-core/blob/master/property-escapes.md) (`\p{…}` and `\P{…}`) in Unicode regular expressions to ES5 or ES6 that works in today’s environments.
|
||||
|
||||
**Note:** the Unicode property escape syntax is non-standard and may or may not reflect what eventually gets specified.
|
||||
|
||||
[Here’s an online demo.](https://mothereff.in/regexpu#input=var+regex+%3D+/%5Cp%7BScript_Extensions%3DGreek%7D/u%3B&unicodePropertyEscape=1)
|
||||
|
||||
## Installation
|
||||
|
||||
```sh
|
||||
$ npm install @babel/plugin-transform-unicode-property-regex
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### Via `.babelrc` (recommended)
|
||||
|
||||
`.babelrc`
|
||||
|
||||
```json
|
||||
{
|
||||
"plugins": ["transform-unicode-property-regex"]
|
||||
}
|
||||
```
|
||||
|
||||
### Via CLI
|
||||
|
||||
```sh
|
||||
$ babel --plugins transform-unicode-property-regex script.js
|
||||
```
|
||||
|
||||
### Via Node.js API
|
||||
|
||||
```js
|
||||
require('@babel/core').transform(code, {
|
||||
'plugins': ['transform-unicode-property-regex']
|
||||
});
|
||||
```
|
||||
|
||||
To transpile to ES6/ES2015:
|
||||
|
||||
```js
|
||||
require('@babel/core').transform(code, {
|
||||
'plugins': [
|
||||
['transform-unicode-property-regex', { 'useUnicodeFlag': true }]
|
||||
]
|
||||
});
|
||||
```
|
||||
|
||||
## Author
|
||||
|
||||
| [](https://twitter.com/mathias "Follow @mathias on Twitter") |
|
||||
|---|
|
||||
| [Mathias Bynens](https://mathiasbynens.be/) |
|
||||
@ -0,0 +1,27 @@
|
||||
{
|
||||
"name": "@babel/plugin-transform-unicode-property-regex",
|
||||
"version": "7.0.0-beta.3",
|
||||
"description": "Compile Unicode property escapes in Unicode regular expressions to ES5.",
|
||||
"homepage": "https://babeljs.io/",
|
||||
"main": "lib/index.js",
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
},
|
||||
"keywords": [
|
||||
"babel-plugin",
|
||||
"regex",
|
||||
"regexp",
|
||||
"regular expressions",
|
||||
"unicode properties",
|
||||
"unicode"
|
||||
],
|
||||
"repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-unicode-property-regex",
|
||||
"bugs": "https://github.com/babel/babel/issues",
|
||||
"dependencies": {
|
||||
"@babel/helper-regex": "7.0.0-beta.3",
|
||||
"regexpu-core": "^4.1.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/helper-plugin-test-runner": "7.0.0-beta.3"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
import rewritePattern from "regexpu-core";
|
||||
import * as regex from "babel-helper-regex";
|
||||
|
||||
export default function() {
|
||||
return {
|
||||
visitor: {
|
||||
RegExpLiteral(path, state) {
|
||||
const node = path.node;
|
||||
if (!regex.is(node, "u")) {
|
||||
return;
|
||||
}
|
||||
const useUnicodeFlag = state.opts.useUnicodeFlag || false;
|
||||
node.pattern = rewritePattern(node.pattern, node.flags, {
|
||||
unicodePropertyEscape: true,
|
||||
useUnicodeFlag: useUnicodeFlag,
|
||||
});
|
||||
if (!useUnicodeFlag) {
|
||||
regex.pullFlag(node, "u");
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
@ -0,0 +1,2 @@
|
||||
var regexEmojiModifier = /\p{Emoji_Modifier}/u;
|
||||
var regexEmojiComponent = /\p{Emoji_Component}/u;
|
||||
@ -0,0 +1,2 @@
|
||||
var regexEmojiModifier = /[\u{1F3FB}-\u{1F3FF}]/u;
|
||||
var regexEmojiComponent = /[#\*0-9\u200D\u20E3\uFE0F\u{1F1E6}-\u{1F1FF}\u{1F3FB}-\u{1F3FF}\u{E0020}-\u{E007F}]/u;
|
||||
@ -0,0 +1,7 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-unicode-property-regex", {
|
||||
"useUnicodeFlag": true
|
||||
}]
|
||||
]
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
var regex = /\p{Script_Extensions=Anatolian_Hieroglyphs}/u;
|
||||
@ -0,0 +1 @@
|
||||
var regex = /[\u{14400}-\u{14646}]/u;
|
||||
@ -0,0 +1 @@
|
||||
var regex = /\p{ASCII_Hex_Digit}/u;
|
||||
@ -0,0 +1 @@
|
||||
var regex = /[0-9A-Fa-f]/u;
|
||||
@ -0,0 +1 @@
|
||||
var regex = /\p{Regional_Indicator}/u;
|
||||
@ -0,0 +1 @@
|
||||
var regex = /[\u{1F1E6}-\u{1F1FF}]/u;
|
||||
@ -0,0 +1,2 @@
|
||||
var regexEmojiModifier = /\p{Emoji_Modifier}/u;
|
||||
var regexEmojiComponent = /\p{Emoji_Component}/u;
|
||||
@ -0,0 +1,2 @@
|
||||
var regexEmojiModifier = /(?:\uD83C[\uDFFB-\uDFFF])/;
|
||||
var regexEmojiComponent = /(?:[#\*0-9\u200D\u20E3\uFE0F]|\uD83C[\uDDE6-\uDDFF\uDFFB-\uDFFF]|\uDB40[\uDC20-\uDC7F])/;
|
||||
@ -0,0 +1,5 @@
|
||||
{
|
||||
"plugins": [
|
||||
["transform-unicode-property-regex"]
|
||||
]
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
var regex = /\p{Script_Extensions=Anatolian_Hieroglyphs}/u;
|
||||
@ -0,0 +1 @@
|
||||
var regex = /(?:\uD811[\uDC00-\uDE46])/;
|
||||
@ -0,0 +1 @@
|
||||
var regex = /\p{ASCII_Hex_Digit}/u;
|
||||
@ -0,0 +1 @@
|
||||
var regex = /[0-9A-Fa-f]/;
|
||||
@ -0,0 +1 @@
|
||||
var regex = /\p{Regional_Indicator}/u;
|
||||
@ -0,0 +1 @@
|
||||
var regex = /(?:\uD83C[\uDDE6-\uDDFF])/;
|
||||
@ -0,0 +1,2 @@
|
||||
import runner from "@babel/helper-plugin-test-runner";
|
||||
runner(__dirname);
|
||||
@ -13,6 +13,6 @@
|
||||
"@babel/plugin-transform-class-properties": "7.0.0-beta.3",
|
||||
"@babel/plugin-transform-object-rest-spread": "7.0.0-beta.3",
|
||||
"@babel/plugin-transform-optional-catch-binding": "7.0.0-beta.3",
|
||||
"babel-plugin-transform-unicode-property-regex": "^2.0.5"
|
||||
"@babel/plugin-transform-unicode-property-regex": "7.0.0-beta.3"
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@ import transformAsyncGeneratorFunctions from "@babel/plugin-transform-async-gene
|
||||
import transformClassProperties from "@babel/plugin-transform-class-properties";
|
||||
import transformObjectRestSpread from "@babel/plugin-transform-object-rest-spread";
|
||||
import transformOptionalCatchBinding from "@babel/plugin-transform-optional-catch-binding";
|
||||
import transformUnicodePropertyRegex from "babel-plugin-transform-unicode-property-regex";
|
||||
import transformUnicodePropertyRegex from "@babel/plugin-transform-unicode-property-regex";
|
||||
|
||||
export default function() {
|
||||
return {
|
||||
|
||||
@ -78,7 +78,7 @@
|
||||
"@babel/plugin-transform-regenerator": "7.0.0-beta.3",
|
||||
"@babel/plugin-transform-runtime": "7.0.0-beta.3",
|
||||
"@babel/plugin-transform-strict-mode": "7.0.0-beta.3",
|
||||
"babel-plugin-transform-unicode-property-regex": "^2.0.5",
|
||||
"@babel/plugin-transform-unicode-property-regex": "7.0.0-beta.3",
|
||||
"@babel/preset-es2015": "7.0.0-beta.3",
|
||||
"@babel/preset-es2016": "7.0.0-beta.3",
|
||||
"@babel/preset-es2017": "7.0.0-beta.3",
|
||||
|
||||
@ -205,7 +205,7 @@ registerPlugins({
|
||||
"transform-regenerator": require("@babel/plugin-transform-regenerator"),
|
||||
"transform-runtime": require("@babel/plugin-transform-runtime"),
|
||||
"transform-strict-mode": require("@babel/plugin-transform-strict-mode"),
|
||||
"transform-unicode-property-regex": require("babel-plugin-transform-unicode-property-regex"),
|
||||
"transform-unicode-property-regex": require("@babel/plugin-transform-unicode-property-regex"),
|
||||
});
|
||||
|
||||
// All the presets we should bundle
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user