@@ -8,45 +8,41 @@ import Maybe
9 function timeNow() { return (new window.Date).getTime(); }
9 function timeNow() { return (new window.Date).getTime(); }
11− function fpsWhen(desiredFPS) { return function (isOn) {
11+ function fpsWhen(desiredFPS, isOn) {
12− var msPerFrame = 1000 / desiredFPS;
12+ var msPerFrame = 1000 / desiredFPS;
13− var prev = timeNow(), curr = prev, diff = 0, wasOn = true;
13+ var prev = timeNow(), curr = prev, diff = 0, wasOn = true;
14− var ticker = Elm.Signal.constant(diff);
14+ var ticker = Elm.Signal.constant(diff);
15− function tick(zero) { return function() {
15+ function tick(zero) { return function() {
16− curr = timeNow();
16+ curr = timeNow();
17− diff = zero ? 0 : curr - prev;
17+ diff = zero ? 0 : curr - prev;
18− prev = curr;
18+ prev = curr;
19− Dispatcher.notify(ticker.id, diff);
19+ Dispatcher.notify(ticker.id, diff);
22− var timeoutID = 0;
22+ var timeoutID = 0;
23− function f(isOn) { return function(t) {
23+ function f(isOn, t) {
24− if (isOn) {
24+ if (isOn) {
25− timeoutID = setTimeout(tick(!wasOn && isOn), msPerFrame);
25+ timeoutID = setTimeout(tick(!wasOn && isOn), msPerFrame);
26− } else if (wasOn) {
26+ } else if (wasOn) {
27− clearTimeout(timeoutID);
27+ clearTimeout(timeoutID);
33− return Elm.Signal.lift2(f)(isOn)(ticker);
32+ return Elm.Signal.lift2(F2(f))(isOn)(ticker);
37− function everyWhen(isOn) { return function(t) {
35+ function everyWhen(t, isOn) {
38− var clock = Elm.Signal.constant(timeNow());
36+ var clock = Elm.Signal.constant(timeNow());
39− function tellTime() { Dispatcher.notify(clock.id, timeNow()); }
37+ function tellTime() { Dispatcher.notify(clock.id, timeNow()); }
40− setInterval(tellTime, t);
38+ setInterval(tellTime, t);
41− return clock;
39+ return clock;
45− function since(t) { return function(s) {
42+ function since(t, s) {
46− function cmp(a) { return function(b) { return !Value.eq(a,b); }; }
43+ function cmp(a,b) { return !Value.eq(a,b) }
47− var dcount = Elm.Signal.count(Elm.Signal.delay(t)(s));
44+ var dcount = Elm.Signal.count(Elm.Signal.delay(t)(s));
48− return Elm.Signal.lift2(cmp)(Elm.Signal.count(s))(dcount);
45+ return Elm.Signal.lift2(F2(cmp))(Elm.Signal.count(s))(dcount);
51 function after(t) {
47 function after(t) {
52 t *= 1000;
48 t *= 1000;
@@ -65,11 +61,11 @@ import Maybe
65 return isNaN(t) ? Elm.Maybe.Nothing : Elm.Maybe.Just(t);
61 return isNaN(t) ? Elm.Maybe.Nothing : Elm.Maybe.Just(t);
67 Elm.Native.Time = {
63 Elm.Native.Time = {
68− fpsWhen : fpsWhen,
64+ fpsWhen : F2(fpsWhen),
69− fps : function(t) { return fpsWhen(t)(Elm.Signal.constant(true)); },
65+ fps : function(t) { return fpsWhen(t, Elm.Signal.constant(true)); },
70− every : everyWhen(Elm.Signal.constant(true)),
66+ every : function(t) { return everyWhen(t, Elm.Signal.constant(true)) },
71 delay : Elm.Signal.delay,
67 delay : Elm.Signal.delay,
72− since : since,
68+ since : F2(since),
73 after : after,
69 after : after,
74 before : before,
70 before : before,
75 toDate : function(t) { return new window.Date(t); },
71 toDate : function(t) { return new window.Date(t); },