on master help sign in
Solidify format for modules. Convert the Time module.
commitf70fdaa3002a81ed0d18ed86f9d7e4ee9a3c9c04 authorevancz <info@elm-lang.org> dateFri 8 Mar 2013, 22:50 (14 years ago) parent9084db2
4 files changed+51−64
libraries/Native/Signal/Http.js+19−25 libraries/Native/Signal/Keyboard.js+4−7 libraries/Native/Signal/Mouse.js+5−6 libraries/Native/Signal/Time.js+23−26
libraries/Native/Signal/Http.js+19−25
@@ -1,15 +1,13 @@
11
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) {
93 'use strict';
104 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);
1311
1412
1513 function registerReq(queue,responses) { return function(req) {
@@ -28,13 +26,11 @@ Elm.Native.Signal.Http = function(elm) {
2826 }
2927
3028 function setHeader(pair) {
31− request.setRequestHeader(elm.JavaScript.fomString(pair._0),
32− elm.JavaScript.fromString(pair._1));
29+ request.setRequestHeader( JS.fomString(pair._0), JS.fromString(pair._1) );
3330 }
3431
3532 function sendReq(queue,responses,req) {
36− var JS = elm.JavaScript;
37− var response = { value: elm.Http.Waiting };
33+ var response = { value: { ctor:'Waiting' } };
3834 queue.push(response);
3935
4036 var request = null;
@@ -42,26 +38,24 @@ Elm.Native.Signal.Http = function(elm) {
4238 if (window.XMLHttpRequest) { request = new XMLHttpRequest(); }
4339 request.onreadystatechange = function(e) {
4440 if (request.readyState === 4) {
45− response.value = (request.status === 200
46− ? elm.Http.Success(JS.castJSStringToString(request.responseText))
47− : elm.Http.Failure(request.status)(JS.castJSStringToString(request.statusText)));
41+ response.value = (request.status === 200 ?
42+ { ctor:'Success', _0:JS.toString(request.responseText) } :
43+ { ctor:'Failure', _0:request.status, _1:JS.toString(request.statusText) });
4844 setTimeout(function() { updateQueue(queue,responses); }, 0);
4945 }
5046 };
51− request.open(JS.castStringToJSString(req.verb),
52− JS.castStringToJSString(req.url),
53− true);
54− elm.List.map(setHeader)(req.headers);
55− request.send(JS.castStringToJSString(req.body));
47+ request.open(JS.fromString(req.verb), JS.fromString(req.url), true);
48+ List.map(setHeader)(req.headers);
49+ request.send(JS.fromString(req.body));
5650 }
5751
5852 function send(requests) {
59− var responses = elm.Signal.constant(elm.Http.Waiting);
60− var sender = elm.Signal.lift(registerReq([],responses))(requests);
53+ var responses = Signal.constant(elm.Http.Waiting);
54+ var sender = A2( Signal.lift, registerReq([],responses), requests );
6155 function f(x) { return function(y) { return x; } }
62− return elm.Signal.lift2(f)(responses)(sender);
56+ return A3( Signal.lift2, f, responses, sender );
6357 }
6458
65− return elm.Native.Signal.Http = {send:send};
59+ return elm.Native.Http = {send:send};
6660
6761};
libraries/Native/Signal/Keyboard.js+4−7
@@ -1,18 +1,15 @@
1−/*
2−*/
31
4−Elm.Native.Signal.Keyboard = function(elm) {
2+Elm.Native.Keyboard = function(elm) {
53 'use strict';
64 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;
96
107 var Signal = Elm.Signal(elm);
118 var KR = Elm.Keyboard.Raw(elm);
129 var List = Elm.List(elm);
1310
1411 function keySignal(f) {
15− var signal = Signal.lift(f)(elm.Keyboard.Raw.keysDown);
12+ var signal = A2( Signal.lift, f, elm.Keyboard.Raw.keysDown );
1613 KR.keysDown.defaultNumberOfKids += 1;
1714 signal.defaultNumberOfKids = 0;
1815 return signal;
@@ -37,6 +34,6 @@ Elm.Native.Signal.Keyboard = function(elm) {
3734
3835 function is(key) { return keySignal(List.member(key)); }
3936
40− return elm.Native.Signal.Keyboard = { isDown:is, dir:F4(dir) };
37+ return elm.Native.Keyboard = { isDown:is, dir:F4(dir) };
4138
4239};
libraries/Native/Signal/Mouse.js+5−6
@@ -1,9 +1,8 @@
11
2−Elm.Native.Signal.Mouse = function(elm) {
2+Elm.Native.Mouse = function(elm) {
33 'use strict';
44 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;
76
87 var Signal = Elm.Signal(elm);
98 var Misc = Elm.Native.Misc(elm);
@@ -14,9 +13,9 @@ Elm.Native.Signal.Mouse = function(elm) {
1413 // do not get rid of x and y. By setting their default number
1514 // of kids, it is possible to detatch the mouse listeners if
1615 // 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);
1817 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);
2019 y.defaultNumberOfKids = 0;
2120
2221 var isDown = Signal.constant(false);
@@ -67,7 +66,7 @@ Elm.Native.Signal.Mouse = function(elm) {
6766 Misc.addListener(elm.node, 'mouseup' , up);
6867 Misc.addListener(elm.node, 'mousemove', move);
6968
70− return elm.Native.Signal.Mouse = {
69+ return elm.Native.Mouse = {
7170 position: position,
7271 x:x,
7372 y:y,
libraries/Native/Signal/Time.js+23−26
@@ -1,22 +1,19 @@
1−/*
2−import Signal
3−import Maybe
4−*/
51
6−(function() {
2+Elm.Native.Time = function(elm) {
73 'use strict';
84
9− function timeNow() { return (new window.Date).getTime(); }
5+ var Signal = Elm.Signal(elm);
6+ var Maybe = Elm.Maybe(elm);
107
118 function fpsWhen(desiredFPS, isOn) {
129 var msPerFrame = 1000 / desiredFPS;
13− var prev = timeNow(), curr = prev, diff = 0, wasOn = true;
14− var ticker = Elm.Signal.constant(diff);
10+ var prev = Date.now(), curr = prev, diff = 0, wasOn = true;
11+ var ticker = Signal.constant(diff);
1512 function tick(zero) { return function() {
16− curr = timeNow();
13+ curr = Date.now();
1714 diff = zero ? 0 : curr - prev;
1815 prev = curr;
19− Dispatcher.notify(ticker.id, diff);
16+ elm.notify(ticker.id, diff);
2017 };
2118 }
2219 var timeoutID = 0;
@@ -29,42 +26,42 @@ import Maybe
2926 wasOn = isOn;
3027 return t;
3128 }
32− return Elm.Signal.lift2(F2(f))(isOn)(ticker);
29+ return A3( Signal.lift2, F2(f), isOn, ticker );
3330 }
3431
3532 function everyWhen(t, isOn) {
36− var clock = Elm.Signal.constant(timeNow());
37− function tellTime() { Dispatcher.notify(clock.id, timeNow()); }
33+ var clock = Signal.constant(Date.now());
34+ function tellTime() { elm.notify(clock.id, Date.now()); }
3835 setInterval(tellTime, t);
3936 return clock;
4037 }
4138
4239 function since(t, s) {
4340 function cmp(a,b) { return !Value.eq(a,b) }
44− var dcount = Elm.Signal.count(Elm.Signal.delay(t)(s));
45− return Elm.Signal.lift2(F2(cmp))(Elm.Signal.count(s))(dcount);
41+ var dcount = Signal.count(Signal.delay(t)(s));
42+ return A3( Signal.lift2, F2(cmp), Signal.count(s), dcount );
4643 }
4744 function after(t) {
4845 t *= 1000;
49− var thread = Elm.Signal.constant(false);
50− setTimeout(function() { Dispatcher.notify(thread.id, true); }, t);
46+ var thread = Signal.constant(false);
47+ setTimeout(function() { elm.notify(thread.id, true); }, t);
5148 return thread;
5249 }
5350 function before(t) {
5451 t *= 1000;
55− var thread = Elm.Signal.constant(true);
56− setTimeout(function() { Dispatcher.notify(thread.id, false); }, t);
52+ var thread = Signal.constant(true);
53+ setTimeout(function() { elm.notify(thread.id, false); }, t);
5754 return thread;
5855 }
5956 function read(s) {
60− var t = window.Date.parse(s);
61− return isNaN(t) ? Elm.Maybe.Nothing : Elm.Maybe.Just(t);
57+ var t = Date.parse(s);
58+ return isNaN(t) ? Maybe.Nothing : Maybe.Just(t);
6259 }
63− Elm.Native.Time = {
60+ return elm.Native.Time = {
6461 fpsWhen : F2(fpsWhen),
65− fps : function(t) { return fpsWhen(t, Elm.Signal.constant(true)); },
66− every : function(t) { return everyWhen(t, Elm.Signal.constant(true)) },
67− delay : Elm.Signal.delay,
62+ fps : function(t) { return fpsWhen(t, Signal.constant(true)); },
63+ every : function(t) { return everyWhen(t, Signal.constant(true)) },
64+ delay : Signal.delay,
6865 since : F2(since),
6966 after : after,
7067 before : before,
@@ -72,4 +69,4 @@ import Maybe
7269 read : read
7370 };
7471
75−}());
72+};