on master help sign in
Fix issues with improperly created characters
99bd100Evan Czaplicki
libraries/Native/String.js+10−6
@@ -26,10 +26,14 @@ Elm.Native.String.make = function(elm) {
26 return str.length;
26 return str.length;
27 }
27 }
28 function map(f,str) {
28 function map(f,str) {
29− return str.split('').map(f).join('');
29+ var out = str.split('');
30+ for (var i = out.length; i--; ) {
31+ out[i] = f(Utils.chr(out[i]));
32+ }
33+ return out.join('');
30 }
34 }
31 function filter(pred,str) {
35 function filter(pred,str) {
32− return str.split('').filter(pred).join('');
36+ return str.split('').map(Utils.chr).filter(pred).join('');
33 }
37 }
34 function reverse(str) {
38 function reverse(str) {
35 return str.split('').reverse().join('');
39 return str.split('').reverse().join('');
@@ -37,13 +41,13 @@ Elm.Native.String.make = function(elm) {
37 function foldl(f,b,str) {
41 function foldl(f,b,str) {
38 var len = str.length;
42 var len = str.length;
39 for (var i = 0; i < len; ++i) {
43 for (var i = 0; i < len; ++i) {
40− b = A2(f, str[i], b);
44+ b = A2(f, Utils.chr(str[i]), b);
41 }
45 }
42 return b;
46 return b;
43 }
47 }
44 function foldr(f,b,str) {
48 function foldr(f,b,str) {
45 for (var i = str.length; i--; ) {
49 for (var i = str.length; i--; ) {
46− b = A2(f, str[i], b);
50+ b = A2(f, Utils.chr(str[i]), b);
47 }
51 }
48 return b;
52 return b;
49 }
53 }
@@ -116,13 +120,13 @@ Elm.Native.String.make = function(elm) {
116
120
117 function any(pred, str) {
121 function any(pred, str) {
118 for (var i = str.length; i--; ) {
122 for (var i = str.length; i--; ) {
119− if (pred(str[i])) return true;
123+ if (pred(Utils.chr(str[i]))) return true;
120 }
124 }
121 return false;
125 return false;
122 }
126 }
123 function all(pred, str) {
127 function all(pred, str) {
124 for (var i = str.length; i--; ) {
128 for (var i = str.length; i--; ) {
125− if (!pred(str[i])) return false;
129+ if (!pred(Utils.chr(str[i]))) return false;
126 }
130 }
127 return true;
131 return true;
128 }
132 }