on master help sign in
Convert the Date, JS, and Json modules.
8e6dbf8evancz
libraries/Native/Date.js+12−12
@@ -1,25 +1,25 @@
1−/**
2−module Native.Color where
3
1
4−import Maybe
2+Elm.Native.Date = function(elm) {
5−import JavaScript
3+ 'use strict';
6−**/
7
4
8−(function() {
5+ elm.Native = elm.Native || {};
9−'use strict';
6+ if (elm.Native.Date) return elm.Native.Date;
7+
8+ var JS = Elm.JavaScript(elm);
9+ var Maybe = Elm.Maybe(elm);
10
10
11 function dateNow() { return new window.Date; }
11 function dateNow() { return new window.Date; }
12 function readDate(str) {
12 function readDate(str) {
13− var d = new window.Date(Elm.JavaScript.castStringToJSString(str));
13+ var d = new window.Date(JS.fromString(str));
14− if (isNaN(d.getTime())) return Elm.Maybe.Nothing;
14+ if (isNaN(d.getTime())) return Maybe.Nothing;
15− return Elm.Maybe.Just(d);
15+ return Maybe.Just(d);
16 }
16 }
17
17
18 var dayTable = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
18 var dayTable = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
19 var monthTable = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
19 var monthTable = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
20 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
20 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
21
21
22− Elm.Native.Date = {
22+ return elm.Native.Date = {
23 read : readDate,
23 read : readDate,
24 year : function(d) { return d.getFullYear(); },
24 year : function(d) { return d.getFullYear(); },
25 month : function(d) { return { ctor:monthTable[d.getMonth()] }; },
25 month : function(d) { return { ctor:monthTable[d.getMonth()] }; },
@@ -31,4 +31,4 @@ import JavaScript
31 dayOfWeek : function(d) { return { ctor:dayTable[d.getDay()] }; },
31 dayOfWeek : function(d) { return { ctor:dayTable[d.getDay()] }; },
32 };
32 };
33
33
34−}());
34+};
libraries/Native/JavaScript.js+14−15
@@ -1,18 +1,17 @@
1−/**
2−module Native.JavaScript where
3−**/
4
1
5−(function() {
2+Elm.Native.JavaScript = function(elm) {
6 'use strict';
3 'use strict';
7
4
8− var fromArray = Elm.Native.List.fromArray;
5+ elm.Native = elm.Native || {};
6+ if (elm.Native.JavaScript) return elm.Native.JavaScript;
7+
9− var toArray = Elm.Native.List.toArray;
8+ var List = Elm.Native.List(elm);
10
9
11 function fromJS(v) {
10 function fromJS(v) {
12 var type = typeof v;
11 var type = typeof v;
13 if (type === 'number' ) return v;
12 if (type === 'number' ) return v;
14 if (type === 'boolean') return v;
13 if (type === 'boolean') return v;
15− if (type === 'string' ) return fromArray(v);
14+ if (type === 'string' ) return List.fromArray(v);
16 if (v instanceof Array) {
15 if (v instanceof Array) {
17 var arr = [];
16 var arr = [];
18 var len = v.length;
17 var len = v.length;
@@ -20,7 +19,7 @@ module Native.JavaScript where
20 var x = fromJS(v[i]);
19 var x = fromJS(v[i]);
21 if (x !== null) arr.push(x);
20 if (x !== null) arr.push(x);
22 }
21 }
23− return fromArray(arr);
22+ return List.fromArray(arr);
24 }
23 }
25 if (type === 'object') {
24 if (type === 'object') {
26 var rec = { _:{} };
25 var rec = { _:{} };
@@ -45,7 +44,7 @@ module Native.JavaScript where
45 return obj;
44 return obj;
46 }
45 }
47 if (type === 'object' && (v.ctor === 'Cons' || v.ctor === 'Nil')) {
46 if (type === 'object' && (v.ctor === 'Cons' || v.ctor === 'Nil')) {
48− var array = toArray(v);
47+ var array = List.toArray(v);
49 for (var i = array.length; i--; ) {
48 for (var i = array.length; i--; ) {
50 array[i] = toJS(array[i]);
49 array[i] = toJS(array[i]);
51 }
50 }
@@ -62,15 +61,15 @@ module Native.JavaScript where
62 throw new Error("'fromRecord' must be called on a record.");
61 throw new Error("'fromRecord' must be called on a record.");
63 }
62 }
64
63
65− Elm.Native.JavaScript = {
64+ return elm.Native.JavaScript = {
66 id : function(n) { return n },
65 id : function(n) { return n },
67 toInt : function(n) { return n|0 },
66 toInt : function(n) { return n|0 },
68− toString : function(s) { return fromArray(s) },
67+ toString : function(s) { return List.fromArray(s) },
69− toList : fromArray,
68+ toList : List.fromArray,
70− fromString : function(s) { return toArray(s).join('') },
69+ fromString : function(s) { return List.toArray(s).join('') },
71− fromList : toArray,
70+ fromList : List.toArray,
72 toRecord : fromJS,
71 toRecord : fromJS,
73 fromRecord : fromRecord
72 fromRecord : fromRecord
74 };
73 };
75
74
76−}());
75+};
libraries/Native/Json.js+13−19
@@ -1,17 +1,11 @@
1
1
2−/**
3−module Native.Json where
4−
5−import Maybe
6−import JavaScript
7−import Dict
8−import List
9−**/
10−
11−(function() {
2+Elm.Native.Json = function(elm) {
12 'use strict';
3 'use strict';
13
4
5+ var Maybe = Elm.Maybe(elm);
6+ var Dict = Elm.Dict(elm);
7+ var List = Elm.List(elm);
14− var JS = Elm.JavaScript;
8+ var JS = Elm.JavaScript(elm);
15
9
16 function fromValue(v) {
10 function fromValue(v) {
17 switch (v.ctor) {
11 switch (v.ctor) {
@@ -19,7 +13,7 @@ import List
19 case 'String' : return JS.fromString(v._0);
13 case 'String' : return JS.fromString(v._0);
20 case 'Object' :
14 case 'Object' :
21 var obj = {};
15 var obj = {};
22− var array = JS.fromList(Elm.Dict.toList(v._0));
16+ var array = JS.fromList(Dict.toList(v._0));
23 for (var i = arr.length; i--; ) {
17 for (var i = arr.length; i--; ) {
24 obj[JS.fromString(array[i]._0)] = fromValue(array[i]._1);
18 obj[JS.fromString(array[i]._0)] = fromValue(array[i]._1);
25 }
19 }
@@ -52,34 +46,34 @@ import List
52 }
46 }
53 var array = [];
47 var array = [];
54 for (var k in v) array.push(Tuple2(JS.toString(k), toValue(v[k])));
48 for (var k in v) array.push(Tuple2(JS.toString(k), toValue(v[k])));
55− return { ctor:"Object", _0: Elm.Dict.fromList(JS.toList(array)) };
49+ return { ctor:"Object", _0: Dict.fromList(JS.toList(array)) };
56 }
50 }
57 }
51 }
58
52
59 function fromJSString(str) {
53 function fromJSString(str) {
60 try {
54 try {
61− return Elm.Maybe.Just(toValue(JSON.parse(str)));
55+ return Maybe.Just(toValue(JSON.parse(str)));
62 } catch (e) {
56 } catch (e) {
63− return Elm.Maybe.Nothing;
57+ return Maybe.Nothing;
64 }
58 }
65 }
59 }
66
60
67 function recordFromJSString(str) {
61 function recordFromJSString(str) {
68 try {
62 try {
69− return Elm.Maybe.Just(JS.toRecord(JSON.parse(str)));
63+ return Maybe.Just(JS.toRecord(JSON.parse(str)));
70 } catch (e) {
64 } catch (e) {
71− return Elm.Maybe.Nothing;
65+ return Maybe.Nothing;
72 }
66 }
73 }
67 }
74 function recordToPrettyJSString(sep, rec) {
68 function recordToPrettyJSString(sep, rec) {
75 return JSON.stringify(JS.fromRecord(rec), null, JS.fromString(sep));
69 return JSON.stringify(JS.fromRecord(rec), null, JS.fromString(sep));
76 }
70 }
77
71
78− Elm.Native.Json = {
72+ return elm.Native.Json = {
79 toPrettyJSString : F2(toPrettyJSString),
73 toPrettyJSString : F2(toPrettyJSString),
80 fromJSString : fromJSString,
74 fromJSString : fromJSString,
81 recordToPrettyJSString : F2(recordToPrettyJSString),
75 recordToPrettyJSString : F2(recordToPrettyJSString),
82 recordFromJSString : recordFromJSString
76 recordFromJSString : recordFromJSString
83 };
77 };
84
78
85−}());
79+};