[Pkg-javascript-commits] [node-regjsparser] 01/01: Generate our own identifier regex instead of relying on a copy-pasted one

Julien Puydt julien.puydt at laposte.net
Sat Sep 9 08:10:46 UTC 2017


This is an automated email from the git hooks/post-receive script.

jpuydt-guest pushed a commit to branch master
in repository node-regjsparser.

commit e00c104ce9d2d043de435fa3bae119041ab5d4fa
Author: Julien Puydt <julien.puydt at laposte.net>
Date:   Sat Sep 9 10:00:01 2017 +0200

    Generate our own identifier regex instead of relying on a copy-pasted one
---
 debian/control                                     |  2 +-
 debian/install                                     |  1 +
 .../patches/adapt_generate_identifier_regex.patch  | 17 ++++++++
 debian/patches/series                              |  3 ++
 ...pdate_generate_identifier_regex_to_10.0.0.patch | 49 ++++++++++++++++++++++
 debian/patches/use_own_identifier_regex.patch      | 15 +++++++
 debian/rules                                       |  6 +++
 debian/source/lintian-overrides                    |  2 -
 debian/tests/simple                                |  2 +-
 9 files changed, 93 insertions(+), 4 deletions(-)

diff --git a/debian/control b/debian/control
index 0e02c92..960594f 100644
--- a/debian/control
+++ b/debian/control
@@ -3,7 +3,7 @@ Section: web
 Priority: optional
 Maintainer: Debian Javascript Maintainers <pkg-javascript-devel at lists.alioth.debian.org>
 Uploaders: Julien Puydt <julien.puydt at laposte.net>
-Build-Depends: debhelper (>= 10), nodejs
+Build-Depends: debhelper (>= 10), nodejs, node-regenerate, node-unicode-10.0.0
 Standards-Version: 4.0.1
 Homepage: https://github.com/jviereck/regjsparser
 Vcs-Git: https://anonscm.debian.org/git/pkg-javascript/node-regjsparser.git
diff --git a/debian/install b/debian/install
index 5815bdf..dfd1119 100644
--- a/debian/install
+++ b/debian/install
@@ -1,3 +1,4 @@
 package.json usr/lib/nodejs/regjsparser/
 parser.js usr/lib/nodejs/regjsparser/
+identifier-regex.js usr/lib/nodejs/regjsparser/
 bin usr/lib/nodejs/regjsparser/
diff --git a/debian/patches/adapt_generate_identifier_regex.patch b/debian/patches/adapt_generate_identifier_regex.patch
new file mode 100644
index 0000000..46a6a6b
--- /dev/null
+++ b/debian/patches/adapt_generate_identifier_regex.patch
@@ -0,0 +1,17 @@
+Description: don't use a copy-pasted pregenerated regex
+Author: Julien Puydt
+Forwarded: no
+
+--- a/tools/generate-identifier-regex.js
++++ b/tools/generate-identifier-regex.js
+@@ -45,7 +45,7 @@
+ //   result.NonAsciiIdentifierStart
+ // );
+ console.log(
+-  '// ECMAScript 5.1/Unicode v%s NonAsciiIdentifierPart:\n\n%s',
+-  version,
+-  result.NonAsciiIdentifierPart,
++  "var main ='"
++  +result.NonAsciiIdentifierPart
++  +"'; module.exports = main"
+ );
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..6a43199
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,3 @@
+update_generate_identifier_regex_to_10.0.0.patch
+adapt_generate_identifier_regex.patch
+use_own_identifier_regex.patch
diff --git a/debian/patches/update_generate_identifier_regex_to_10.0.0.patch b/debian/patches/update_generate_identifier_regex_to_10.0.0.patch
new file mode 100644
index 0000000..39395cc
--- /dev/null
+++ b/debian/patches/update_generate_identifier_regex_to_10.0.0.patch
@@ -0,0 +1,49 @@
+Description: update the script creating the identifier regex to 10.0.0
+Author: Julien Puydt
+Forwarded: yes
+
+--- a/tools/generate-identifier-regex.js
++++ b/tools/generate-identifier-regex.js
+@@ -3,7 +3,7 @@
+ var regenerate = require('regenerate');
+ 
+ // Which Unicode version should be used?
+-var version = '7.0.0'; // note: also update `package.json` when this changes
++var version = '10.0.0'; // note: also update `package.json` when this changes
+ 
+ // Shorthand function
+ var get = function(what) {
+@@ -11,16 +11,16 @@
+ };
+ 
+ // Unicode categories needed to construct the ES5 regex
+-var Lu = get('categories/Lu');
+-var Ll = get('categories/Ll');
+-var Lt = get('categories/Lt');
+-var Lm = get('categories/Lm');
+-var Lo = get('categories/Lo');
+-var Nl = get('categories/Nl');
+-var Mn = get('categories/Mn');
+-var Mc = get('categories/Mc');
+-var Nd = get('categories/Nd');
+-var Pc = get('categories/Pc');
++var Lu = get('General_Category/Uppercase_Letter');
++var Ll = get('General_Category/Lowercase_Letter');
++var Lt = get('General_Category/Titlecase_Letter');
++var Lm = get('General_Category/Modifier_Letter');
++var Lo = get('General_Category/Other_Letter');
++var Nl = get('General_Category/Letter_Number');
++var Mn = get('General_Category/Nonspacing_Mark');
++var Mc = get('General_Category/Spacing_Mark');
++var Nd = get('General_Category/Decimal_Number');
++var Pc = get('General_Category/Connector_Punctuation');
+ 
+ var generateES5Regex = function() { // ES 5.1
+   // http://mathiasbynens.be/notes/javascript-identifiers#valid-identifier-names
+@@ -47,5 +47,5 @@
+ console.log(
+   '// ECMAScript 5.1/Unicode v%s NonAsciiIdentifierPart:\n\n%s',
+   version,
+-  result.NonAsciiIdentifierPart
++  result.NonAsciiIdentifierPart,
+ );
diff --git a/debian/patches/use_own_identifier_regex.patch b/debian/patches/use_own_identifier_regex.patch
new file mode 100644
index 0000000..d602665
--- /dev/null
+++ b/debian/patches/use_own_identifier_regex.patch
@@ -0,0 +1,15 @@
+Description: don't use a copy-pasted pregenerated regex
+Author: Julien Puydt
+Forwarded: no
+
+--- a/parser.js
++++ b/parser.js
+@@ -733,7 +733,7 @@
+     // Taken from the Esprima parser.
+     function isIdentifierPart(ch) {
+       // Generated by `tools/generate-identifier-regex.js`.
+-      var NonAsciiIdentifierPart = new RegExp('[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5 [...]
++      var NonAsciiIdentifierPart = new RegExp(require('./identifier-regex'));
+ 
+       return (ch === 36) || (ch === 95) ||  // $ (dollar) and _ (underscore)
+         (ch >= 65 && ch <= 90) ||         // A..Z
diff --git a/debian/rules b/debian/rules
index 2d33f6a..818e9b3 100755
--- a/debian/rules
+++ b/debian/rules
@@ -2,3 +2,9 @@
 
 %:
 	dh $@
+
+override_dh_auto_build:
+	node tools/generate-identifier-regex.js > identifier-regex.js
+
+override_dh_auto_clean:
+	rm -f identifier-regex.js
diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides
deleted file mode 100644
index 7224677..0000000
--- a/debian/source/lintian-overrides
+++ /dev/null
@@ -1,2 +0,0 @@
-# the tool to generate that long line is available in node-esprima
-node-regjsparser source: source-is-missing parser.js line length is 5108 characters (>512)
diff --git a/debian/tests/simple b/debian/tests/simple
index bd4c626..2879302 100644
--- a/debian/tests/simple
+++ b/debian/tests/simple
@@ -1,3 +1,3 @@
 #!/bin/sh
 set -e
-node -e "parse=require('regjsparser').parse;ast=parse('a');ast.codepoint==97 || process.exit(1)"
+node -e "parse=require('regjsparser').parse;ast=parse('a');ast.codePoint==97 || process.exit(1)"

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-regjsparser.git



More information about the Pkg-javascript-commits mailing list