@@ -1,22 +1,19 @@
6−(function() {
2+Elm.Native.Time = function(elm) {
7 'use strict';
3 'use strict';
9− function timeNow() { return (new window.Date).getTime(); }
5+ var Signal = Elm.Signal(elm);
6+ var Maybe = Elm.Maybe(elm);
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);
22 var timeoutID = 0;
19 var timeoutID = 0;
@@ -29,42 +26,42 @@ import Maybe
29 wasOn = isOn;
26 wasOn = isOn;
32− return Elm.Signal.lift2(F2(f))(isOn)(ticker);
29+ return A3( Signal.lift2, F2(f), isOn, ticker );
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;
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 );
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;
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;
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);
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