From 94c4daaf9ea67875ab1b720d1d7bceef7c690552 Mon Sep 17 00:00:00 2001 From: kzc Date: Mon, 2 Nov 2015 12:24:09 -0500 Subject: [PATCH 1/2] Have mozilla AST RegExpLiteral parser use regex.pattern and regex.flags rather than non-standard `raw` property. --- lib/mozilla-ast.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/mozilla-ast.js b/lib/mozilla-ast.js index 15be4581..7ce6e78d 100644 --- a/lib/mozilla-ast.js +++ b/lib/mozilla-ast.js @@ -146,7 +146,17 @@ case "boolean": return new (val ? AST_True : AST_False)(args); default: - args.value = M.regex && M.raw ? M.raw : val; + var rx = M.regex; + if (rx && rx.pattern) { + // RegExpLiteral as per ESTree AST spec + args.value = "/" + rx.pattern + "/"; + if (rx.flags) { + args.value += rx.flags; + } + } else { + // support legacy RegExp + args.value = M.regex && M.raw ? M.raw : val; + } return new AST_RegExp(args); } }, @@ -334,7 +344,7 @@ }; }); - def_to_moz(AST_RegExp, function To_Moz_RegExp(M) { + def_to_moz(AST_RegExp, function To_Moz_RegExpLiteral(M) { var value = M.value; return { type: "Literal", From 7dbe961b2d49533d54dfe5263f94de27de043316 Mon Sep 17 00:00:00 2001 From: kzc Date: Mon, 2 Nov 2015 13:10:37 -0500 Subject: [PATCH 2/2] simplify mozilla AST RegExpLiteral token parse and handle corner cases of regex.pattern better --- lib/mozilla-ast.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/mozilla-ast.js b/lib/mozilla-ast.js index 7ce6e78d..2bb469fb 100644 --- a/lib/mozilla-ast.js +++ b/lib/mozilla-ast.js @@ -149,10 +149,7 @@ var rx = M.regex; if (rx && rx.pattern) { // RegExpLiteral as per ESTree AST spec - args.value = "/" + rx.pattern + "/"; - if (rx.flags) { - args.value += rx.flags; - } + args.value = new RegExp(rx.pattern, rx.flags).toString(); } else { // support legacy RegExp args.value = M.regex && M.raw ? M.raw : val;