diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2016-01-21 21:50:30 +0100 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2016-01-21 21:50:30 +0100 |
commit | 71e4e39295fe31e3d2d36fc7e4abfa51b3e240cd (patch) | |
tree | 44f4f6129cd9c8c79f9bcc7524cdb7123c070b3f | |
parent | 1dac302975911752000e04fddb85b5302d7001b8 (diff) | |
parent | 5f092520d1f7df15910664d0555bf4c7db8b90d3 (diff) | |
download | Nim-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.nim | 20 | ||||
-rw-r--r-- | lib/system/jssys.nim | 33 |
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 """ |