on master help sign in
Remove all uses of JavaScript module.
67c5aa9Evan Czaplicki
compiler/Generate/JavaScript.hs+1−2
@@ -39,7 +39,6 @@ internalImports name =
39 , include "_U" "_N.Utils"
39 , include "_U" "_N.Utils"
40 , include "_L" "_N.List"
40 , include "_L" "_N.List"
41 , include "_E" "_N.Error"
41 , include "_E" "_N.Error"
42− , include "_J" "_N.JavaScript"
43 , varDecl "$moduleName" (string name)
42 , varDecl "$moduleName" (string name)
44 ]
43 ]
45
44
@@ -163,7 +162,7 @@ expression (A region expr) =
163
162
164 ExplicitList es ->
163 ExplicitList es ->
165 do es' <- mapM expression es
164 do es' <- mapM expression es
166− return $ obj "_J.toList" <| ArrayLit () es'
165+ return $ obj "_L.fromArray" <| ArrayLit () es'
167
166
168 Data name es ->
167 Data name es ->
169 do es' <- mapM expression es
168 do es' <- mapM expression es
libraries/Native/Date.js+1−2
@@ -4,12 +4,11 @@ Elm.Native.Date.make = function(elm) {
4 elm.Native.Date = elm.Native.Date || {};
4 elm.Native.Date = elm.Native.Date || {};
5 if (elm.Native.Date.values) return elm.Native.Date.values;
5 if (elm.Native.Date.values) return elm.Native.Date.values;
6
6
7− var JS = Elm.JavaScript.make(elm);
8 var Maybe = Elm.Maybe.make(elm);
7 var Maybe = Elm.Maybe.make(elm);
9
8
10 function dateNow() { return new window.Date; }
9 function dateNow() { return new window.Date; }
11 function readDate(str) {
10 function readDate(str) {
12− var d = new window.Date(JS.fromString(str));
11+ var d = new window.Date(str);
13 if (isNaN(d.getTime())) return Maybe.Nothing;
12 if (isNaN(d.getTime())) return Maybe.Nothing;
14 return Maybe.Just(d);
13 return Maybe.Just(d);
15 }
14 }
libraries/Native/Json.js+12−13
@@ -8,25 +8,24 @@ Elm.Native.Json.make = function(elm) {
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);
12 var Utils = Elm.Native.Utils.make(elm);
11 var Utils = Elm.Native.Utils.make(elm);
13
12
14 function toJS(v) {
13 function toJS(v) {
15 switch (v.ctor) {
14 switch (v.ctor) {
16 case 'Null' : return null;
15 case 'Null' : return null;
17− case 'String' : return JS.fromString(v._0);
16+ case 'String' : return v._0;
18 case 'Number' : return v._0;
17 case 'Number' : return v._0;
19 case 'Boolean': return v._0;
18 case 'Boolean': return v._0;
20 case 'Object' :
19 case 'Object' :
21 var obj = {};
20 var obj = {};
22− var array = JS.fromList(Dict.toList(v._0));
21+ var array = List.toArray(Dict.toList(v._0));
23 for (var i = array.length; i--; ) {
22 for (var i = array.length; i--; ) {
24 var entry = array[i];
23 var entry = array[i];
25− obj[JS.fromString(entry._0)] = toJS(entry._1);
24+ obj[entry._0] = toJS(entry._1);
26 }
25 }
27 return obj;
26 return obj;
28 case 'Array' :
27 case 'Array' :
29− var array = JS.fromList(v._0);
28+ var array = List.toArray(v._0);
30 for (var i = array.length; i--; ) {
29 for (var i = array.length; i--; ) {
31 array[i] = toJS(array[i]);
30 array[i] = toJS(array[i]);
32 }
31 }
@@ -35,29 +34,29 @@ Elm.Native.Json.make = function(elm) {
35 }
34 }
36
35
37 function toString(sep, value) {
36 function toString(sep, value) {
38− return JSON.stringify(toJS(value), null, JS.fromString(sep));
37+ return JSON.stringify(toJS(value), null, sep);
39 }
38 }
40
39
41 function fromJS(v) {
40 function fromJS(v) {
42 switch (typeof v) {
41 switch (typeof v) {
43− case 'string' : return { ctor:"String" , _0: JS.toString(v) };
42+ case 'string' : return { ctor:"String" , _0: v };
44− case 'number' : return { ctor:"Number" , _0: JS.toFloat(v) };
43+ case 'number' : return { ctor:"Number" , _0: v };
45− case 'boolean': return { ctor:"Boolean", _0: JS.toBool(v) };
44+ case 'boolean': return { ctor:"Boolean", _0: v };
46 case 'object' :
45 case 'object' :
47 if (v === null) return { ctor:"Null" };
46 if (v === null) return { ctor:"Null" };
48 if (v instanceof Array) {
47 if (v instanceof Array) {
49 for (var i = v.length; i--; ) { v[i] = fromJS(v[i]); }
48 for (var i = v.length; i--; ) { v[i] = fromJS(v[i]); }
50− return { ctor:"Array", _0: JS.toList(v) };
49+ return { ctor:"Array", _0: List.fromArray(v) };
51 }
50 }
52 var array = [];
51 var array = [];
53− for (var k in v) array.push(Utils.Tuple2(JS.toString(k), fromJS(v[k])));
52+ for (var k in v) array.push(Utils.Tuple2(k, fromJS(v[k])));
54− return { ctor:"Object", _0: Dict.fromList(JS.toList(array)) };
53+ return { ctor:"Object", _0: Dict.fromList(List.fromArray(array)) };
55 }
54 }
56 }
55 }
57
56
58 function fromString(str) {
57 function fromString(str) {
59 try {
58 try {
60− return Maybe.Just(fromJS(JSON.parse(JS.fromString(str))));
59+ return Maybe.Just(fromJS(JSON.parse(str)));
61 } catch (e) {
60 } catch (e) {
62 return Maybe.Nothing;
61 return Maybe.Nothing;
63 }
62 }
libraries/Native/Regex.js+14−14
@@ -6,8 +6,8 @@ Elm.Native.Regex.make = function(elm) {
6 if ('values' in Elm.Native.Regex)
6 if ('values' in Elm.Native.Regex)
7 return elm.Native.Regex.values = Elm.Native.Regex.values;
7 return elm.Native.Regex.values = Elm.Native.Regex.values;
8
8
9+ var List = Elm.List.make(elm);
9 var Maybe = Elm.Maybe.make(elm);
10 var Maybe = Elm.Maybe.make(elm);
10− var JS = Elm.JavaScript.make(elm);
11
11
12 function escape(str) {
12 function escape(str) {
13 return str.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
13 return str.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
@@ -20,14 +20,14 @@ Elm.Native.Regex.make = function(elm) {
20 }
20 }
21
21
22 function contains(re, string) {
22 function contains(re, string) {
23− return JS.fromString(string).match(re) !== null;
23+ return string.match(re) !== null;
24 }
24 }
25
25
26 function find(n, re, str) {
26 function find(n, re, str) {
27 n = n.ctor === "All" ? Infinity : n._0;
27 n = n.ctor === "All" ? Infinity : n._0;
28 var out = [];
28 var out = [];
29 var number = 0;
29 var number = 0;
30− var string = JS.fromString(str);
30+ var string = str;
31 var result;
31 var result;
32 while (number++ < n && (result = re.exec(string))) {
32 while (number++ < n && (result = re.exec(string))) {
33 var i = result.length - 1;
33 var i = result.length - 1;
@@ -36,17 +36,17 @@ Elm.Native.Regex.make = function(elm) {
36 var submatch = result[i];
36 var submatch = result[i];
37 subs[--i] = submatch === undefined
37 subs[--i] = submatch === undefined
38 ? Maybe.Nothing
38 ? Maybe.Nothing
39− : Maybe.Just(JS.toString(submatch));
39+ : Maybe.Just(submatch);
40 }
40 }
41 out.push({
41 out.push({
42 _:{},
42 _:{},
43− match: JS.toString(result[0]),
43+ match: result[0],
44− submatches: JS.toList(subs),
44+ submatches: List.fromArray(subs),
45 index: result.index,
45 index: result.index,
46 number: number,
46 number: number,
47 });
47 });
48 }
48 }
49− return JS.toList(out);
49+ return List.fromArray(out);
50 }
50 }
51
51
52 function replace(n, re, replacer, string) {
52 function replace(n, re, replacer, string) {
@@ -60,24 +60,24 @@ Elm.Native.Regex.make = function(elm) {
60 var submatch = arguments[i];
60 var submatch = arguments[i];
61 submatches[--i] = submatch === undefined
61 submatches[--i] = submatch === undefined
62 ? Maybe.Nothing
62 ? Maybe.Nothing
63− : Maybe.Just(JS.toString(submatch));
63+ : Maybe.Just(submatch);
64 }
64 }
65− return JS.fromString(replacer({
65+ return replacer({
66 _:{},
66 _:{},
67 match:match,
67 match:match,
68− submatches:JS.toList(submatches),
68+ submatches:List.fromArray(submatches),
69 index:arguments[i-1],
69 index:arguments[i-1],
70 number:count
70 number:count
71− }));
71+ });
72 }
72 }
73 return string.replace(re, jsReplacer);
73 return string.replace(re, jsReplacer);
74 }
74 }
75
75
76 function split(n, re, str) {
76 function split(n, re, str) {
77 if (n === Infinity) {
77 if (n === Infinity) {
78− return JS.toList(JS.fromString(string).split(re));
78+ return List.fromArray(string.split(re));
79 }
79 }
80− var string = JS.fromString(str);
80+ var string = str;
81 var result;
81 var result;
82 var out = [];
82 var out = [];
83 var start = re.lastIndex;
83 var start = re.lastIndex;
@@ -87,7 +87,7 @@ Elm.Native.Regex.make = function(elm) {
87 start = re.lastIndex;
87 start = re.lastIndex;
88 }
88 }
89 out.push(string.slice(start));
89 out.push(string.slice(start));
90− return JS.toList(out);
90+ return List.fromArray(out);
91 }
91 }
92
92
93 return Elm.Native.Regex.values = {
93 return Elm.Native.Regex.values = {
libraries/Native/Signal/Http.js+6−7
@@ -5,7 +5,6 @@ Elm.Native.Http.make = function(elm) {
5 elm.Native.Http = elm.Native.Http || {};
5 elm.Native.Http = elm.Native.Http || {};
6 if (elm.Native.Http.values) return elm.Native.Http.values;
6 if (elm.Native.Http.values) return elm.Native.Http.values;
7
7
8− var JS = Elm.JavaScript.make(elm);
9 var List = Elm.List.make(elm);
8 var List = Elm.List.make(elm);
10 var Signal = Elm.Signal.make(elm);
9 var Signal = Elm.Signal.make(elm);
11
10
@@ -38,17 +37,17 @@ Elm.Native.Http.make = function(elm) {
38 request.onreadystatechange = function(e) {
37 request.onreadystatechange = function(e) {
39 if (request.readyState === 4) {
38 if (request.readyState === 4) {
40 response.value = (request.status >= 200 && request.status < 300 ?
39 response.value = (request.status >= 200 && request.status < 300 ?
41− { ctor:'Success', _0:JS.toString(request.responseText) } :
40+ { ctor:'Success', _0:request.responseText } :
42− { ctor:'Failure', _0:request.status, _1:JS.toString(request.statusText) });
41+ { ctor:'Failure', _0:request.status, _1:request.statusText });
43 setTimeout(function() { updateQueue(queue,responses); }, 0);
42 setTimeout(function() { updateQueue(queue,responses); }, 0);
44 }
43 }
45 };
44 };
46− request.open(JS.fromString(req.verb), JS.fromString(req.url), true);
45+ request.open(req.verb, req.url, true);
47 function setHeader(pair) {
46 function setHeader(pair) {
48− request.setRequestHeader( JS.fromString(pair._0), JS.fromString(pair._1) );
47+ request.setRequestHeader( pair._0, pair._1 );
49 }
48 }
50− List.map(setHeader)(req.headers);
49+ A2( List.map, setHeader, req.headers );
51− request.send(JS.fromString(req.body));
50+ request.send(req.body);
52 }
51 }
53
52
54 function send(requests) {
53 function send(requests) {
libraries/Native/Signal/Touch.js+3−3
@@ -6,7 +6,7 @@ Elm.Native.Touch.make = function(elm) {
6 if (elm.Native.Touch.values) return elm.Native.Touch.values;
6 if (elm.Native.Touch.values) return elm.Native.Touch.values;
7
7
8 var Signal = Elm.Signal.make(elm);
8 var Signal = Elm.Signal.make(elm);
9− var JS = Elm.JavaScript.make(elm);
9+ var List = Elm.List.make(elm);
10 var Utils = Elm.Native.Utils.make(elm);
10 var Utils = Elm.Native.Utils.make(elm);
11
11
12 function Dict() {
12 function Dict() {
@@ -136,7 +136,7 @@ Elm.Native.Touch.make = function(elm) {
136 return sig;
136 return sig;
137 }
137 }
138
138
139− var touches = dependency(JS.toList);
139+ var touches = dependency(List.fromArray);
140
140
141 var taps = function() {
141 var taps = function() {
142 var sig = dependency(function(_) { return tap; });
142 var sig = dependency(function(_) { return tap; });
@@ -149,4 +149,4 @@ Elm.Native.Touch.make = function(elm) {
149
149
150 return elm.Native.Touch.values = { touches: touches, taps: taps };
150 return elm.Native.Touch.values = { touches: touches, taps: taps };
151
151
152−};
152+};
libraries/Native/Signal/WebSocket.js+3−5
@@ -6,12 +6,11 @@ Elm.Native.WebSocket.make = function(elm) {
6 if (elm.Native.WebSocket.values) return elm.Native.WebSocket.values;
6 if (elm.Native.WebSocket.values) return elm.Native.WebSocket.values;
7
7
8 var Signal = Elm.Signal.make(elm);
8 var Signal = Elm.Signal.make(elm);
9− var JS = Elm.JavaScript.make(elm);
10 var List = Elm.Native.List.make(elm);
9 var List = Elm.Native.List.make(elm);
11
10
12 function open(url, outgoing) {
11 function open(url, outgoing) {
13 var incoming = Signal.constant(List.Nil);
12 var incoming = Signal.constant(List.Nil);
14− var ws = new WebSocket(JS.fromString(url));
13+ var ws = new WebSocket(url);
15
14
16 var pending = [];
15 var pending = [];
17 var ready = false;
16 var ready = false;
@@ -22,12 +21,11 @@ Elm.Native.WebSocket.make = function(elm) {
22 ready = true;
21 ready = true;
23 };
22 };
24 ws.onmessage = function(event) {
23 ws.onmessage = function(event) {
25− elm.notify(incoming.id, JS.toString(event.data));
24+ elm.notify(incoming.id, event.data);
26 };
25 };
27
26
28 function send(msg) {
27 function send(msg) {
29− var s = JS.fromString(msg);
30− ready ? ws.send(s) : pending.push(s);
28+ ready ? ws.send(msg) : pending.push(msg);
31 }
29 }
32
30
33 function take1(x,y) { return x }
31 function take1(x,y) { return x }
libraries/Native/String.js+9−9
@@ -8,7 +8,7 @@ Elm.Native.String.make = function(elm) {
8
8
9 var Char = Elm.Char.make(elm);
9 var Char = Elm.Char.make(elm);
10 var Maybe = Elm.Maybe.make(elm);
10 var Maybe = Elm.Maybe.make(elm);
11− var JS = Elm.JavaScript.make(elm);
11+ var List = Elm.List.make(elm);
12 var Utils = Elm.Native.Utils.make(elm);
12 var Utils = Elm.Native.Utils.make(elm);
13
13
14 function isEmpty(str) {
14 function isEmpty(str) {
@@ -26,7 +26,7 @@ Elm.Native.String.make = function(elm) {
26 return a + b;
26 return a + b;
27 }
27 }
28 function concat(strs) {
28 function concat(strs) {
29− return JS.fromList(strs).join('');
29+ return List.toArray(strs).join('');
30 }
30 }
31 function length(str) {
31 function length(str) {
32 return str.length;
32 return str.length;
@@ -59,10 +59,10 @@ Elm.Native.String.make = function(elm) {
59 }
59 }
60
60
61 function split(sep, str) {
61 function split(sep, str) {
62− return JS.toList(str.split(sep));
62+ return List.fromArray(str.split(sep));
63 }
63 }
64 function join(sep, strs) {
64 function join(sep, strs) {
65− return JS.fromList(strs).join(sep);
65+ return List.toArray(strs).join(sep);
66 }
66 }
67 function repeat(n, str) {
67 function repeat(n, str) {
68 var result = '';
68 var result = '';
@@ -111,10 +111,10 @@ Elm.Native.String.make = function(elm) {
111 }
111 }
112
112
113 function words(str) {
113 function words(str) {
114− return JS.toList(str.split(/\s+/g));
114+ return List.fromArray(str.split(/\s+/g));
115 }
115 }
116 function lines(str) {
116 function lines(str) {
117− return JS.toList(str.split(/\r\n|\r|\n/g));
117+ return List.fromArray(str.split(/\r\n|\r|\n/g));
118 }
118 }
119
119
120 function toUpper(str) {
120 function toUpper(str) {
@@ -155,7 +155,7 @@ Elm.Native.String.make = function(elm) {
155 is.push(i);
155 is.push(i);
156 i = i + subLen;
156 i = i + subLen;
157 }
157 }
158− return JS.toList(is);
158+ return List.fromArray(is);
159 }
159 }
160
160
161 function toInt(s) {
161 function toInt(s) {
@@ -193,10 +193,10 @@ Elm.Native.String.make = function(elm) {
193 }
193 }
194
194
195 function toList(str) {
195 function toList(str) {
196− return JS.toList(str.split('').map(Utils.chr));
196+ return List.fromArray(str.split('').map(Utils.chr));
197 }
197 }
198 function fromList(chars) {
198 function fromList(chars) {
199− return JS.fromList(chars).join('');
199+ return List.toArray(chars).join('');
200 }
200 }
201
201
202 return Elm.Native.String.values = {
202 return Elm.Native.String.values = {