on master help sign in
cosmetic: normalize indentation
a9d13e6Evan Czaplicki
libraries/Native/Json.js+57−57
@@ -1,71 +1,71 @@
1Elm.Native.Json = {};
1Elm.Native.Json = {};
2Elm.Native.Json.make = function(elm) {
2Elm.Native.Json.make = function(elm) {
3
3
4− elm.Native = elm.Native || {};
4+ elm.Native = elm.Native || {};
5− elm.Native.Json = elm.Native.Json || {};
5+ elm.Native.Json = elm.Native.Json || {};
6− if (elm.Native.Json.values) return elm.Native.Json.values;
6+ if (elm.Native.Json.values) return elm.Native.Json.values;
7
7
8− var Maybe = Elm.Maybe.make(elm);
8+ var Maybe = Elm.Maybe.make(elm);
9− var Dict = Elm.Dict.make(elm);
9+ var Dict = Elm.Dict.make(elm);
10− var List = Elm.List.make(elm);
10+ var List = Elm.List.make(elm);
11− var JS = Elm.JavaScript.make(elm);
11+ var JS = Elm.JavaScript.make(elm);
12− var Utils = Elm.Native.Utils.make(elm);
12+ var Utils = Elm.Native.Utils.make(elm);
13
13
14− function fromValue(v) {
14+ function fromValue(v) {
15− switch (v.ctor) {
15+ switch (v.ctor) {
16− case 'Null' : return null;
16+ case 'Null' : return null;
17− case 'String' : return JS.fromString(v._0);
17+ case 'String' : return JS.fromString(v._0);
18− case 'Number' : return v._0;
18+ case 'Number' : return v._0;
19− case 'Boolean': return v._0;
19+ case 'Boolean': return v._0;
20− case 'Object' :
20+ case 'Object' :
21− var obj = {};
21+ var obj = {};
22− var array = JS.fromList(Dict.toList(v._0));
22+ var array = JS.fromList(Dict.toList(v._0));
23− for (var i = array.length; i--; ) {
23+ for (var i = array.length; i--; ) {
24− var entry = array[i];
24+ var entry = array[i];
25− obj[JS.fromString(entry._0)] = fromValue(entry._1);
25+ obj[JS.fromString(entry._0)] = fromValue(entry._1);
26− }
26+ }
27− return obj;
27+ return obj;
28− case 'Array' :
28+ case 'Array' :
29− var array = JS.fromList(v._0);
29+ var array = JS.fromList(v._0);
30− for (var i = array.length; i--; ) {
30+ for (var i = array.length; i--; ) {
31− array[i] = fromValue(array[i]);
31+ array[i] = fromValue(array[i]);
32− }
32+ }
33− return array;
33+ return array;
34+ }
34 }
35 }
35− }
36
36
37− function toString(sep, value) {
37+ function toString(sep, value) {
38− return JSON.stringify(fromValue(value), null, JS.fromString(sep));
38+ return JSON.stringify(fromValue(value), null, JS.fromString(sep));
39− }
39+ }
40
40
41− function toValue(v) {
41+ function toValue(v) {
42− switch (typeof v) {
42+ switch (typeof v) {
43− case 'string' : return { ctor:"String" , _0: JS.toString(v) };
43+ case 'string' : return { ctor:"String" , _0: JS.toString(v) };
44− case 'number' : return { ctor:"Number" , _0: JS.toFloat(v) };
44+ case 'number' : return { ctor:"Number" , _0: JS.toFloat(v) };
45− case 'boolean': return { ctor:"Boolean", _0: JS.toBool(v) };
45+ case 'boolean': return { ctor:"Boolean", _0: JS.toBool(v) };
46− case 'object' :
46+ case 'object' :
47− if (v === null) return { ctor:"Null" };
47+ if (v === null) return { ctor:"Null" };
48− if (v instanceof Array) {
48+ if (v instanceof Array) {
49− for (var i = v.length; i--; ) { v[i] = toValue(v[i]); }
49+ for (var i = v.length; i--; ) { v[i] = toValue(v[i]); }
50− return { ctor:"Array", _0: JS.toList(v) };
50+ return { ctor:"Array", _0: JS.toList(v) };
51− }
51+ }
52− var array = [];
52+ var array = [];
53− for (var k in v) array.push(Utils.Tuple2(JS.toString(k), toValue(v[k])));
53+ for (var k in v) array.push(Utils.Tuple2(JS.toString(k), toValue(v[k])));
54− return { ctor:"Object", _0: Dict.fromList(JS.toList(array)) };
54+ return { ctor:"Object", _0: Dict.fromList(JS.toList(array)) };
55+ }
55 }
56 }
56− }
57
57
58− function fromString(str) {
58+ function fromString(str) {
59− try {
59+ try {
60− return Maybe.Just(toValue(JSON.parse(JS.fromString(str))));
60+ return Maybe.Just(toValue(JSON.parse(JS.fromString(str))));
61− } catch (e) {
61+ } catch (e) {
62− return Maybe.Nothing;
62+ return Maybe.Nothing;
63+ }
63 }
64 }
64− }
65
65
66− return elm.Native.Json.values = {
66+ return elm.Native.Json.values = {
67− toString : F2(toString),
67+ toString : F2(toString),
68− fromString : fromString,
68+ fromString : fromString,
69− };
69+ };
70
70
71};
71};