@@ -9,57 +9,60 @@ Elm.Native.JavaScript = function(elm) {
99 var Render = ElmRuntime.use(ElmRuntime.Render.Element);
1010
1111 function fromJS(v) {
12− var type = typeof v;
13− if (type === 'number' ) return v;
14− if (type === 'boolean') return v;
15− if (type === 'string' ) return List.fromArray(v);
16− if (v instanceof Array) {
17− var arr = [];
18− var len = v.length;
19− for (var i = 0; i < len; ++i) {
20− var x = fromJS(v[i]);
21− if (x !== null) arr.push(x);
12+ var type = typeof v;
13+ if (type === 'number' ) return v;
14+ if (type === 'boolean') return v;
15+ if (type === 'string' ) return List.fromArray(v);
16+ if (v instanceof Array) {
17+ var arr = [];
18+ var len = v.length;
19+ for (var i = 0; i < len; ++i) {
20+ var x = fromJS(v[i]);
21+ if (x !== null) arr.push(x);
22+ }
23+ return List.fromArray(arr);
2224 }
23− return List.fromArray(arr);
24− }
25− if (type === 'object') {
26− var rec = { _:{} };
27− for (var f in v) {
28− var x = fromJS(v[f]);
29− if (x !== null) rec[f] = x;
25+ if (type === 'object') {
26+ var rec = { _:{} };
27+ for (var f in v) {
28+ var x = fromJS(v[f]);
29+ if (x !== null) rec[f] = x;
30+ }
31+ return rec;
3032 }
31− return rec;
32− }
33− return null;
33+ return null;
3434 }
3535
3636 function toJS(v) {
37− var type = typeof v;
38− if (type === 'number' || type === 'boolean') return v;
39− if (type === 'object' && '_' in v) {
40− var obj = {};
41− for (var k in v) {
42− var x = v[k];
43− if (x !== null) obj[k] = x;
44− }
45− return obj;
46− }
47− if (type === 'object' && (v.ctor === 'Cons' || v.ctor === 'Nil')) {
48− var array = List.toArray(v);
49− for (var i = array.length; i--; ) {
50− array[i] = toJS(array[i]);
51− }
52− if (typeof array[0] === 'string') array.join('');
53− return array;
54− }
55− return null;
37+ var type = typeof v;
38+ if (type === 'number' || type === 'boolean') return v;
39+ if (type === 'object' && '_' in v) {
40+ var obj = {};
41+ for (var k in v) {
42+ var x = toJS(v[k]);
43+ if (x !== null) obj[k] = x;
44+ }
45+ return obj;
46+ }
47+ if (type === 'object' && (v.ctor === 'Cons' || v.ctor === 'Nil')) {
48+ var array = List.toArray(v);
49+ if (typeof array[0] === 'string') {
50+ array = array.join('');
51+ } else {
52+ for (var i = array.length; i--; ) {
53+ array[i] = toJS(array[i]);
54+ }
55+ }
56+ return array;
57+ }
58+ return null;
5659 }
57−
60+
5861 function fromRecord(r) {
59− if (typeof r === 'object' && '_' in r) {
60− return toJS(r);
61− }
62− throw new Error("'fromRecord' must be called on a record.");
62+ if (typeof r === 'object' && '_' in r) {
63+ return toJS(r);
64+ }
65+ throw new Error("'fromRecord' must be called on a record.");
6366 }
6467
6568 function id(n) { return n; }
@@ -99,4 +102,4 @@ Elm.Native.JavaScript = function(elm) {
99102 fromRecord : fromRecord
100103 };
101104
102−};
105+};