This commit is contained in:
2022-07-18 02:50:52 +00:00
parent befd344ab0
commit 06181b34d6
8569 changed files with 818704 additions and 352705 deletions
+5 -5
View File
@@ -1,4 +1,4 @@
# regjsgen [![Build status][travis-ci-img]][travis-ci] [![Code coverage status][codecov-img]][codecov]
# regjsgen [![Build status][ci-img]][ci] [![Code coverage status][codecov-img]][codecov]
Generate regular expressions from [regjsparser][regjsparser]s AST.
@@ -30,12 +30,12 @@ let regex = regjsgen.generate(ast);
## Support
Tested in Node.js 0.10, 0.12, 4, 6, 8, 10, 12 and 14.<br>
Compatible with regjsparser v0.6.4s AST.
Tested in Node.js 10, 12, 14, and 16.<br>
Compatible with regjsparser v0.7.0s AST.
[travis-ci]: https://travis-ci.org/bnjmnt4n/regjsgen
[travis-ci-img]: https://travis-ci.org/bnjmnt4n/regjsgen.svg?branch=master
[ci]: https://github.com/bnjmnt4n/regjsgen/actions
[ci-img]: https://github.com/bnjmnt4n/regjsgen/workflows/Node.js%20CI/badge.svg
[codecov]: https://codecov.io/gh/bnjmnt4n/regjsgen
[codecov-img]: https://codecov.io/gh/bnjmnt4n/regjsgen/branch/master/graph/badge.svg
[regjsparser]: https://github.com/jviereck/regjsparser
+15 -15
View File
@@ -1,32 +1,32 @@
{
"_args": [
[
"regjsgen@0.5.2",
"/mnt/Foxconn/Digitalent/Deverloper/liff-push_2series"
"regjsgen@0.6.0",
"/home/node/nuxt"
]
],
"_from": "regjsgen@0.5.2",
"_id": "regjsgen@0.5.2",
"_from": "regjsgen@0.6.0",
"_id": "regjsgen@0.6.0",
"_inBundle": false,
"_integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==",
"_integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==",
"_location": "/regjsgen",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "regjsgen@0.5.2",
"raw": "regjsgen@0.6.0",
"name": "regjsgen",
"escapedName": "regjsgen",
"rawSpec": "0.5.2",
"rawSpec": "0.6.0",
"saveSpec": null,
"fetchSpec": "0.5.2"
"fetchSpec": "0.6.0"
},
"_requiredBy": [
"/regexpu-core"
],
"_resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz",
"_spec": "0.5.2",
"_where": "/mnt/Foxconn/Digitalent/Deverloper/liff-push_2series",
"_resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz",
"_spec": "0.6.0",
"_where": "/home/node/nuxt",
"author": {
"name": "Benjamin Tan",
"url": "https://ofcr.se/"
@@ -36,9 +36,9 @@
},
"description": "Generate regular expressions from regjsparsers AST.",
"devDependencies": {
"codecov": "^3.7.0",
"nyc": "^15.0.1",
"regjsparser": "~0.6.4",
"codecov": "^3.8.3",
"nyc": "^15.1.0",
"regjsparser": "^0.7.0",
"request": "^2.88.2"
},
"files": [
@@ -66,5 +66,5 @@
"test": "node tests/tests.js",
"update-fixtures": "node tests/update-fixtures.js"
},
"version": "0.5.2"
"version": "0.6.0"
}
+23 -16
View File
@@ -97,7 +97,7 @@
}
// Constructs a string by concatentating the output of each term.
function generateSequence(generator, terms) {
function generateSequence(generator, terms, /* optional */ separator) {
var i = -1,
length = terms.length,
result = '',
@@ -106,6 +106,8 @@
while (++i < length) {
term = terms[i];
if (separator && i > 0) result += separator;
// Ensure that `\0` null escapes followed by number symbols are not
// treated as backreferences.
if (
@@ -161,9 +163,12 @@
function generateCharacterClass(node) {
assertType(node.type, 'characterClass');
var kind = node.kind;
var separator = kind === 'intersection' ? '&&' : kind === 'subtraction' ? '--' : '';
return '[' +
(node.negative ? '^' : '') +
generateSequence(generateClassAtom, node.body) +
generateSequence(generateClassAtom, node.body, separator) +
']';
}
@@ -187,29 +192,30 @@
}
function generateClassAtom(node) {
assertType(node.type, 'anchor|characterClassEscape|characterClassRange|dot|value');
assertType(node.type, 'anchor|characterClass|characterClassEscape|characterClassRange|dot|value|unicodePropertyEscape|classStrings');
return generate(node);
}
function generateClassStrings(node) {
assertType(node.type, 'classStrings');
return '(' + generateSequence(generateClassString, node.strings, '|') + ')';
}
function generateClassString(node) {
assertType(node.type, 'classString');
return generateSequence(generate, node.characters);
}
function generateDisjunction(node) {
assertType(node.type, 'disjunction');
var body = node.body,
i = -1,
length = body.length,
result = '';
while (++i < length) {
if (i != 0) {
result += '|';
}
result += generate(body[i]);
}
return result;
return generateSequence(generate, node.body, '|');
}
function generateDot(node) {
assertType(node.type, 'dot');
@@ -372,6 +378,7 @@
'characterClass': generateCharacterClass,
'characterClassEscape': generateCharacterClassEscape,
'characterClassRange': generateCharacterClassRange,
'classStrings': generateClassStrings,
'disjunction': generateDisjunction,
'dot': generateDot,
'group': generateGroup,