on master help sign in
Solidify format for modules. Convert the Time module.
f70fdaaevancz
libraries/Native/Signal/Http.js+19−25
@@ -1,15 +1,13 @@
1
1
2−/**
3−import JavaScript
4−import List
5−import Signal
6−**/
7−
8−Elm.Native.Signal.Http = function(elm) {
2+Elm.Native.Http = function(elm) {
9 'use strict';
3 'use strict';
10 elm.Native = elm.Native || {};
4 elm.Native = elm.Native || {};
11− elm.Native.Signal = elm.Native.Signal || {};
12− if (elm.Native.Signal.Http) return elm.Native.Signal.Http;
5+ if (elm.Native.Http) return elm.Native.Http;
6+
7+
8+ var JS = Elm.JavaScript(elm);
9+ var List = Elm.List(elm);
10+ var Signal = Elm.Signal(elm);
13
11
14
12
15 function registerReq(queue,responses) { return function(req) {
13 function registerReq(queue,responses) { return function(req) {
@@ -28,13 +26,11 @@ Elm.Native.Signal.Http = function(elm) {
28 }
26 }
29
27
30 function setHeader(pair) {
28 function setHeader(pair) {
31− request.setRequestHeader(elm.JavaScript.fomString(pair._0),
29+ request.setRequestHeader( JS.fomString(pair._0), JS.fromString(pair._1) );
32− elm.JavaScript.fromString(pair._1));
33 }
30 }
34
31
35 function sendReq(queue,responses,req) {
32 function sendReq(queue,responses,req) {
36− var JS = elm.JavaScript;
37− var response = { value: elm.Http.Waiting };
33+ var response = { value: { ctor:'Waiting' } };
38 queue.push(response);
34 queue.push(response);
39
35
40 var request = null;
36 var request = null;
@@ -42,26 +38,24 @@ Elm.Native.Signal.Http = function(elm) {
42 if (window.XMLHttpRequest) { request = new XMLHttpRequest(); }
38 if (window.XMLHttpRequest) { request = new XMLHttpRequest(); }
43 request.onreadystatechange = function(e) {
39 request.onreadystatechange = function(e) {
44 if (request.readyState === 4) {
40 if (request.readyState === 4) {
45− response.value = (request.status === 200
41+ response.value = (request.status === 200 ?
46− ? elm.Http.Success(JS.castJSStringToString(request.responseText))
42+ { ctor:'Success', _0:JS.toString(request.responseText) } :
47− : elm.Http.Failure(request.status)(JS.castJSStringToString(request.statusText)));
43+ { ctor:'Failure', _0:request.status, _1:JS.toString(request.statusText) });
48 setTimeout(function() { updateQueue(queue,responses); }, 0);
44 setTimeout(function() { updateQueue(queue,responses); }, 0);
49 }
45 }
50 };
46 };
51− request.open(JS.castStringToJSString(req.verb),
47+ request.open(JS.fromString(req.verb), JS.fromString(req.url), true);
52− JS.castStringToJSString(req.url),
53− true);
54− elm.List.map(setHeader)(req.headers);
48+ List.map(setHeader)(req.headers);
55− request.send(JS.castStringToJSString(req.body));
49+ request.send(JS.fromString(req.body));
56 }
50 }
57
51
58 function send(requests) {
52 function send(requests) {
59− var responses = elm.Signal.constant(elm.Http.Waiting);
53+ var responses = Signal.constant(elm.Http.Waiting);
60− var sender = elm.Signal.lift(registerReq([],responses))(requests);
54+ var sender = A2( Signal.lift, registerReq([],responses), requests );
61 function f(x) { return function(y) { return x; } }
55 function f(x) { return function(y) { return x; } }
62− return elm.Signal.lift2(f)(responses)(sender);
56+ return A3( Signal.lift2, f, responses, sender );
63 }
57 }
64
58
65− return elm.Native.Signal.Http = {send:send};
59+ return elm.Native.Http = {send:send};
66
60
67};
61};
libraries/Native/Signal/Keyboard.js+4−7
@@ -1,18 +1,15 @@
1−/*
2−*/
3
1
4−Elm.Native.Signal.Keyboard = function(elm) {
2+Elm.Native.Keyboard = function(elm) {
5 'use strict';
3 'use strict';
6 elm.Native = elm.Native || {};
4 elm.Native = elm.Native || {};
7− elm.Native.Signal = elm.Native.Signal || {};
8− if (elm.Native.Signal.Keyboard) return elm.Native.Signal.Keyboard;
5+ if (elm.Native.Keyboard) return elm.Native.Keyboard;
9
6
10 var Signal = Elm.Signal(elm);
7 var Signal = Elm.Signal(elm);
11 var KR = Elm.Keyboard.Raw(elm);
8 var KR = Elm.Keyboard.Raw(elm);
12 var List = Elm.List(elm);
9 var List = Elm.List(elm);
13
10
14 function keySignal(f) {
11 function keySignal(f) {
15− var signal = Signal.lift(f)(elm.Keyboard.Raw.keysDown);
12+ var signal = A2( Signal.lift, f, elm.Keyboard.Raw.keysDown );
16 KR.keysDown.defaultNumberOfKids += 1;
13 KR.keysDown.defaultNumberOfKids += 1;
17 signal.defaultNumberOfKids = 0;
14 signal.defaultNumberOfKids = 0;
18 return signal;
15 return signal;
@@ -37,6 +34,6 @@ Elm.Native.Signal.Keyboard = function(elm) {
37
34
38 function is(key) { return keySignal(List.member(key)); }
35 function is(key) { return keySignal(List.member(key)); }
39
36
40− return elm.Native.Signal.Keyboard = { isDown:is, dir:F4(dir) };
37+ return elm.Native.Keyboard = { isDown:is, dir:F4(dir) };
41
38
42};
39};
libraries/Native/Signal/Mouse.js+5−6
@@ -1,9 +1,8 @@
1
1
2−Elm.Native.Signal.Mouse = function(elm) {
2+Elm.Native.Mouse = function(elm) {
3 'use strict';
3 'use strict';
4 elm.Native = elm.Native || {};
4 elm.Native = elm.Native || {};
5− elm.Native.Signal = elm.Native.Signal || {};
6− if (elm.Native.Signal.Mouse) return elm.Native.Signal.Mouse;
5+ if (elm.Native.Mouse) return elm.Native.Mouse;
7
6
8 var Signal = Elm.Signal(elm);
7 var Signal = Elm.Signal(elm);
9 var Misc = Elm.Native.Misc(elm);
8 var Misc = Elm.Native.Misc(elm);
@@ -14,9 +13,9 @@ Elm.Native.Signal.Mouse = function(elm) {
14 // do not get rid of x and y. By setting their default number
13 // do not get rid of x and y. By setting their default number
15 // of kids, it is possible to detatch the mouse listeners if
14 // of kids, it is possible to detatch the mouse listeners if
16 // they are not needed.
15 // they are not needed.
17− var x = Signal.lift(function(p){return p._0})(position);
16+ var x = A2( Signal.lift, function(p){return p._0}, position);
18 x.defaultNumberOfKids = 0;
17 x.defaultNumberOfKids = 0;
19− var y = Signal.lift(function(p){return p._1})(position);
18+ var y = A2( Signal.lift, function(p){return p._1}, position);
20 y.defaultNumberOfKids = 0;
19 y.defaultNumberOfKids = 0;
21
20
22 var isDown = Signal.constant(false);
21 var isDown = Signal.constant(false);
@@ -67,7 +66,7 @@ Elm.Native.Signal.Mouse = function(elm) {
67 Misc.addListener(elm.node, 'mouseup' , up);
66 Misc.addListener(elm.node, 'mouseup' , up);
68 Misc.addListener(elm.node, 'mousemove', move);
67 Misc.addListener(elm.node, 'mousemove', move);
69
68
70− return elm.Native.Signal.Mouse = {
69+ return elm.Native.Mouse = {
71 position: position,
70 position: position,
72 x:x,
71 x:x,
73 y:y,
72 y:y,
libraries/Native/Signal/Time.js+23−26
@@ -1,22 +1,19 @@
1−/*
2−import Signal
3−import Maybe
4−*/
5
1
6−(function() {
2+Elm.Native.Time = function(elm) {
7 'use strict';
3 'use strict';
8
4
9− function timeNow() { return (new window.Date).getTime(); }
5+ var Signal = Elm.Signal(elm);
6+ var Maybe = Elm.Maybe(elm);
10
7
11 function fpsWhen(desiredFPS, isOn) {
8 function fpsWhen(desiredFPS, isOn) {
12 var msPerFrame = 1000 / desiredFPS;
9 var msPerFrame = 1000 / desiredFPS;
13− var prev = timeNow(), curr = prev, diff = 0, wasOn = true;
10+ var prev = Date.now(), curr = prev, diff = 0, wasOn = true;
14− var ticker = Elm.Signal.constant(diff);
11+ var ticker = Signal.constant(diff);
15 function tick(zero) { return function() {
12 function tick(zero) { return function() {
16− curr = timeNow();
13+ curr = Date.now();
17 diff = zero ? 0 : curr - prev;
14 diff = zero ? 0 : curr - prev;
18 prev = curr;
15 prev = curr;
19− Dispatcher.notify(ticker.id, diff);
16+ elm.notify(ticker.id, diff);
20 };
17 };
21 }
18 }
22 var timeoutID = 0;
19 var timeoutID = 0;
@@ -29,42 +26,42 @@ import Maybe
29 wasOn = isOn;
26 wasOn = isOn;
30 return t;
27 return t;
31 }
28 }
32− return Elm.Signal.lift2(F2(f))(isOn)(ticker);
29+ return A3( Signal.lift2, F2(f), isOn, ticker );
33 }
30 }
34
31
35 function everyWhen(t, isOn) {
32 function everyWhen(t, isOn) {
36− var clock = Elm.Signal.constant(timeNow());
33+ var clock = Signal.constant(Date.now());
37− function tellTime() { Dispatcher.notify(clock.id, timeNow()); }
34+ function tellTime() { elm.notify(clock.id, Date.now()); }
38 setInterval(tellTime, t);
35 setInterval(tellTime, t);
39 return clock;
36 return clock;
40 }
37 }
41
38
42 function since(t, s) {
39 function since(t, s) {
43 function cmp(a,b) { return !Value.eq(a,b) }
40 function cmp(a,b) { return !Value.eq(a,b) }
44− var dcount = Elm.Signal.count(Elm.Signal.delay(t)(s));
41+ var dcount = Signal.count(Signal.delay(t)(s));
45− return Elm.Signal.lift2(F2(cmp))(Elm.Signal.count(s))(dcount);
42+ return A3( Signal.lift2, F2(cmp), Signal.count(s), dcount );
46 }
43 }
47 function after(t) {
44 function after(t) {
48 t *= 1000;
45 t *= 1000;
49− var thread = Elm.Signal.constant(false);
46+ var thread = Signal.constant(false);
50− setTimeout(function() { Dispatcher.notify(thread.id, true); }, t);
47+ setTimeout(function() { elm.notify(thread.id, true); }, t);
51 return thread;
48 return thread;
52 }
49 }
53 function before(t) {
50 function before(t) {
54 t *= 1000;
51 t *= 1000;
55− var thread = Elm.Signal.constant(true);
52+ var thread = Signal.constant(true);
56− setTimeout(function() { Dispatcher.notify(thread.id, false); }, t);
53+ setTimeout(function() { elm.notify(thread.id, false); }, t);
57 return thread;
54 return thread;
58 }
55 }
59 function read(s) {
56 function read(s) {
60− var t = window.Date.parse(s);
57+ var t = Date.parse(s);
61− return isNaN(t) ? Elm.Maybe.Nothing : Elm.Maybe.Just(t);
58+ return isNaN(t) ? Maybe.Nothing : Maybe.Just(t);
62 }
59 }
63− Elm.Native.Time = {
60+ return elm.Native.Time = {
64 fpsWhen : F2(fpsWhen),
61 fpsWhen : F2(fpsWhen),
65− fps : function(t) { return fpsWhen(t, Elm.Signal.constant(true)); },
62+ fps : function(t) { return fpsWhen(t, Signal.constant(true)); },
66− every : function(t) { return everyWhen(t, Elm.Signal.constant(true)) },
63+ every : function(t) { return everyWhen(t, Signal.constant(true)) },
67− delay : Elm.Signal.delay,
64+ delay : Signal.delay,
68 since : F2(since),
65 since : F2(since),
69 after : after,
66 after : after,
70 before : before,
67 before : before,
@@ -72,4 +69,4 @@ import Maybe
72 read : read
69 read : read
73 };
70 };
74
71
75−}());
72+};