@@ -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+};