Unescape Unicode sequences in regexps when ascii_only is false. #54
authorMihai Bazon <mihai@bazon.net>
Fri, 10 Jan 2014 08:33:58 +0000 (10:33 +0200)
committerMihai Bazon <mihai@bazon.net>
Fri, 10 Jan 2014 08:33:58 +0000 (10:33 +0200)
lib/output.js

index 0c339c4..f778b38 100644 (file)
@@ -1120,8 +1120,16 @@ function OutputStream(options) {
     });
     DEFPRINT(AST_RegExp, function(self, output){
         var str = self.getValue().toString();
-        if (output.option("ascii_only"))
+        if (output.option("ascii_only")) {
             str = output.to_ascii(str);
+        } else {
+            str = str.split("\\\\").map(function(str){
+                return str.replace(/(\\u[0-9a-fA-F]{4}|\\x[0-9a-fA-F]{2})/g, function(s, p1){
+                    var code = parseInt(p1.substr(2), 16);
+                    return code == 10 || code == 13 || code == 0x2028 || code == 0x2029 ? s : String.fromCharCode(code);
+                });
+            }).join("\\\\");
+        }
         output.print(str);
         var p = output.parent();
         if (p instanceof AST_Binary && /^in/.test(p.operator) && p.left === self)