on master help sign in
Convert the Date, JS, and Json modules.
commit8e6dbf80008723acc4658ed894c213361993a35e authorevancz <info@elm-lang.org> dateFri 8 Mar 2013, 23:22 (14 years ago) parent86d02e2
3 files changed+39−46
libraries/Native/Date.js+12−12 libraries/Native/JavaScript.js+14−15 libraries/Native/Json.js+13−19
libraries/Native/Date.js+12−12
@@ -1,25 +1,25 @@
1−/**
2−module Native.Color where
31
4−import Maybe
5−import JavaScript
6−**/
2+Elm.Native.Date = function(elm) {
3+ 'use strict';
74
8−(function() {
9−'use strict';
5+ elm.Native = elm.Native || {};
6+ if (elm.Native.Date) return elm.Native.Date;
7+
8+ var JS = Elm.JavaScript(elm);
9+ var Maybe = Elm.Maybe(elm);
1010
1111 function dateNow() { return new window.Date; }
1212 function readDate(str) {
13− var d = new window.Date(Elm.JavaScript.castStringToJSString(str));
14− if (isNaN(d.getTime())) return Elm.Maybe.Nothing;
15− return Elm.Maybe.Just(d);
13+ var d = new window.Date(JS.fromString(str));
14+ if (isNaN(d.getTime())) return Maybe.Nothing;
15+ return Maybe.Just(d);
1616 }
1717
1818 var dayTable = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
1919 var monthTable = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
2020 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
2121
22− Elm.Native.Date = {
22+ return elm.Native.Date = {
2323 read : readDate,
2424 year : function(d) { return d.getFullYear(); },
2525 month : function(d) { return { ctor:monthTable[d.getMonth()] }; },
@@ -31,4 +31,4 @@ import JavaScript
3131 dayOfWeek : function(d) { return { ctor:dayTable[d.getDay()] }; },
3232 };
3333
34−}());
34+};
libraries/Native/JavaScript.js+14−15
@@ -1,18 +1,17 @@
1−/**
2−module Native.JavaScript where
3−**/
41
5−(function() {
2+Elm.Native.JavaScript = function(elm) {
63 'use strict';
74
8− var fromArray = Elm.Native.List.fromArray;
9− var toArray = Elm.Native.List.toArray;
5+ elm.Native = elm.Native || {};
6+ if (elm.Native.JavaScript) return elm.Native.JavaScript;
7+
8+ var List = Elm.Native.List(elm);
109
1110 function fromJS(v) {
1211 var type = typeof v;
1312 if (type === 'number' ) return v;
1413 if (type === 'boolean') return v;
15− if (type === 'string' ) return fromArray(v);
14+ if (type === 'string' ) return List.fromArray(v);
1615 if (v instanceof Array) {
1716 var arr = [];
1817 var len = v.length;
@@ -20,7 +19,7 @@ module Native.JavaScript where
2019 var x = fromJS(v[i]);
2120 if (x !== null) arr.push(x);
2221 }
23− return fromArray(arr);
22+ return List.fromArray(arr);
2423 }
2524 if (type === 'object') {
2625 var rec = { _:{} };
@@ -45,7 +44,7 @@ module Native.JavaScript where
4544 return obj;
4645 }
4746 if (type === 'object' && (v.ctor === 'Cons' || v.ctor === 'Nil')) {
48− var array = toArray(v);
47+ var array = List.toArray(v);
4948 for (var i = array.length; i--; ) {
5049 array[i] = toJS(array[i]);
5150 }
@@ -62,15 +61,15 @@ module Native.JavaScript where
6261 throw new Error("'fromRecord' must be called on a record.");
6362 }
6463
65− Elm.Native.JavaScript = {
64+ return elm.Native.JavaScript = {
6665 id : function(n) { return n },
6766 toInt : function(n) { return n|0 },
68− toString : function(s) { return fromArray(s) },
69− toList : fromArray,
70− fromString : function(s) { return toArray(s).join('') },
71− fromList : toArray,
67+ toString : function(s) { return List.fromArray(s) },
68+ toList : List.fromArray,
69+ fromString : function(s) { return List.toArray(s).join('') },
70+ fromList : List.toArray,
7271 toRecord : fromJS,
7372 fromRecord : fromRecord
7473 };
7574
76−}());
75+};
libraries/Native/Json.js+13−19
@@ -1,17 +1,11 @@
11
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) {
123 'use strict';
134
14− var JS = Elm.JavaScript;
5+ var Maybe = Elm.Maybe(elm);
6+ var Dict = Elm.Dict(elm);
7+ var List = Elm.List(elm);
8+ var JS = Elm.JavaScript(elm);
159
1610 function fromValue(v) {
1711 switch (v.ctor) {
@@ -19,7 +13,7 @@ import List
1913 case 'String' : return JS.fromString(v._0);
2014 case 'Object' :
2115 var obj = {};
22− var array = JS.fromList(Elm.Dict.toList(v._0));
16+ var array = JS.fromList(Dict.toList(v._0));
2317 for (var i = arr.length; i--; ) {
2418 obj[JS.fromString(array[i]._0)] = fromValue(array[i]._1);
2519 }
@@ -52,34 +46,34 @@ import List
5246 }
5347 var array = [];
5448 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)) };
5650 }
5751 }
5852
5953 function fromJSString(str) {
6054 try {
61− return Elm.Maybe.Just(toValue(JSON.parse(str)));
55+ return Maybe.Just(toValue(JSON.parse(str)));
6256 } catch (e) {
63− return Elm.Maybe.Nothing;
57+ return Maybe.Nothing;
6458 }
6559 }
6660
6761 function recordFromJSString(str) {
6862 try {
69− return Elm.Maybe.Just(JS.toRecord(JSON.parse(str)));
63+ return Maybe.Just(JS.toRecord(JSON.parse(str)));
7064 } catch (e) {
71− return Elm.Maybe.Nothing;
65+ return Maybe.Nothing;
7266 }
7367 }
7468 function recordToPrettyJSString(sep, rec) {
7569 return JSON.stringify(JS.fromRecord(rec), null, JS.fromString(sep));
7670 }
7771
78− Elm.Native.Json = {
72+ return elm.Native.Json = {
7973 toPrettyJSString : F2(toPrettyJSString),
8074 fromJSString : fromJSString,
8175 recordToPrettyJSString : F2(recordToPrettyJSString),
8276 recordFromJSString : recordFromJSString
8377 };
8478
85−}());
79+};