summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2016-01-21 21:50:30 +0100
committerAndreas Rumpf <rumpf_a@web.de>2016-01-21 21:50:30 +0100
commit71e4e39295fe31e3d2d36fc7e4abfa51b3e240cd (patch)
tree44f4f6129cd9c8c79f9bcc7524cdb7123c070b3f
parent1dac302975911752000e04fddb85b5302d7001b8 (diff)
parent5f092520d1f7df15910664d0555bf4c7db8b90d3 (diff)
downloadNim-71e4e39295fe31e3d2d36fc7e4abfa51b3e240cd.tar.gz
Merge pull request #3756 from yglukhov/revert-3733-js-unicode
Revert "Fixed unicode handling in JS. Fixes #3714."
-rw-r--r--compiler/jsgen.nim20
-rw-r--r--lib/system/jssys.nim33
2 files changed, 8 insertions, 45 deletions
diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim
index efd6e874b..c36f5a5a3 100644
--- a/compiler/jsgen.nim
+++ b/compiler/jsgen.nim
@@ -163,26 +163,8 @@ proc mangleName(s: PSym): Rope =
     add(result, rope(s.id))
     s.loc.r = result
 
-proc escapeJSString(s: string): string =
-  result = newStringOfCap(s.len + s.len shr 2)
-  result.add("\"")
-  for c in items(s):
-    case c
-    of '\l': result.add("\\n")
-    of '\r': result.add("\\r")
-    of '\t': result.add("\\t")
-    of '\b': result.add("\\b")
-    of '\a': result.add("\\a")
-    of '\e': result.add("\\e")
-    of '\v': result.add("\\v")
-    of '\\': result.add("\\\\")
-    of '\'': result.add("\\'")
-    of '\"': result.add("\\\"")
-    else: add(result, c)
-  result.add("\"")
-
 proc makeJSString(s: string): Rope =
-  (if s.isNil: "null".rope else: escapeJSString(s).rope)
+  (if s.isNil: "null".rope else: strutils.escape(s).rope)
 
 include jstypes
 
diff --git a/lib/system/jssys.nim b/lib/system/jssys.nim
index abee95f40..3df460952 100644
--- a/lib/system/jssys.nim
+++ b/lib/system/jssys.nim
@@ -166,33 +166,14 @@ proc SetConstr() {.varargs, asmNoStackFrame, compilerproc.} =
   """
 
 proc cstrToNimstr(c: cstring): string {.asmNoStackFrame, compilerproc.} =
-  {.emit: """
-  var ln = `c`.length;
-  var result = new Array(ln);
-  var r = 0;
-  for (var i = 0; i < ln; ++i) {
-    var ch = `c`.charCodeAt(i);
-
-    if (ch < 128) {
-      result[r] = ch;
-    }
-    else if((ch > 127) && (ch < 2048)) {
-      result[r] = (ch >> 6) | 192;
-      ++r;
-      result[r] = (ch & 63) | 128;
-    }
-    else {
-      result[r] = (ch >> 12) | 224;
-      ++r;
-      result[r] = ((ch >> 6) & 63) | 128;
-      ++r;
-      result[r] = (ch & 63) | 128;
+  asm """
+    var result = [];
+    for (var i = 0; i < `c`.length; ++i) {
+      result[i] = `c`.charCodeAt(i);
     }
-    ++r;
-  }
-  result[r] = 0; // terminating zero
-  return result;
-  """.}
+    result[result.length] = 0; // terminating zero
+    return result;
+  """
 
 proc toJSStr(s: string): cstring {.asmNoStackFrame, compilerproc.} =
   asm """