Use new function call format in more places.
This commit is contained in:
parent
3926066a64
commit
58275b0002
6 changed files with 73 additions and 80 deletions
|
@ -15,31 +15,29 @@ function complement(rgb) {
|
|||
return toRGB(hsv);
|
||||
}
|
||||
|
||||
function hsva(h) { return function(s) { return function(v) { return function(a) {
|
||||
var clr = toRGB({hue:h, saturation:s, value:v});
|
||||
clr._3 = a;
|
||||
return clr;
|
||||
}; }; };
|
||||
function hsva(h,s,v,a) {
|
||||
var clr = toRGB({hue:h, saturation:s, value:v});
|
||||
clr._3 = a;
|
||||
return clr;
|
||||
}
|
||||
|
||||
function hsv(h) { return function(s) { return function(v) {
|
||||
return toRGB({hue:h, saturation:s, value:v}); }; }; }
|
||||
function hsv(h,s,v) { return toRGB({hue:h, saturation:s, value:v}); }
|
||||
|
||||
function toHSV(rgb) {
|
||||
var hsv = {};
|
||||
var r = rgb._0 / 255.0, g = rgb._1 / 255.0, b = rgb._2 / 255.0;
|
||||
var M = Math.max(r,g,b);
|
||||
var m = Math.min(r,g,b);
|
||||
var c = M - m;
|
||||
var hsv = {};
|
||||
var r = rgb._0 / 255.0, g = rgb._1 / 255.0, b = rgb._2 / 255.0;
|
||||
var M = Math.max(r,g,b);
|
||||
var m = Math.min(r,g,b);
|
||||
var c = M - m;
|
||||
|
||||
var h = 0;
|
||||
if (c === 0) { h = 0; }
|
||||
else if (M === r) { h = ((g - b) / c) % 6; }
|
||||
else if (M === g) { h = ((b - r) / c) + 2; }
|
||||
else if (M === b) { h = ((r - g) / c) + 4; }
|
||||
h *= 60;
|
||||
var h = 0;
|
||||
if (c === 0) { h = 0; }
|
||||
else if (M === r) { h = ((g - b) / c) % 6; }
|
||||
else if (M === g) { h = ((b - r) / c) + 2; }
|
||||
else if (M === b) { h = ((r - g) / c) + 4; }
|
||||
h *= 60;
|
||||
|
||||
return { value : M, hue : h, saturation : (M === 0 ? 0 : c / M) };
|
||||
return { value : M, hue : h, saturation : (M === 0 ? 0 : c / M) };
|
||||
}
|
||||
|
||||
function between(lo,hi,x) { return lo <= x && x < hi; }
|
||||
|
@ -61,8 +59,11 @@ function toRGB(hsv) {
|
|||
return { ctor:"Color", _0:norm(r+m), _1:norm(g+m), _2:norm(b+m), _3:1 };
|
||||
}
|
||||
|
||||
Elm.Native.Color = {hsva:hsva,
|
||||
hsv:hsv,
|
||||
complement:complement,
|
||||
extract:extract};
|
||||
Elm.Native.Color = {
|
||||
hsva:F4(hsva),
|
||||
hsv:F3(hsv),
|
||||
complement:complement,
|
||||
extract:extract
|
||||
};
|
||||
|
||||
}());
|
|
@ -14,8 +14,7 @@ import List
|
|||
return signal;
|
||||
}
|
||||
|
||||
function dir(up) { return function(down) {
|
||||
return function(left) { return function(right) {
|
||||
function dir(up, down, left, right) {
|
||||
function f(ks) {
|
||||
var x = 0, y = 0;
|
||||
while (ks.ctor == "Cons") {
|
||||
|
@ -30,11 +29,10 @@ import List
|
|||
return { _:{}, x:x, y:y };
|
||||
}
|
||||
return keySignal(f);
|
||||
}}}
|
||||
}
|
||||
|
||||
function is(key) { return keySignal(Elm.List.member(key)); }
|
||||
|
||||
Elm.Native.Keyboard = { isDown:is, dir:dir };
|
||||
Elm.Native.Keyboard = { isDown:is, dir:F4(dir) };
|
||||
|
||||
}());
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/**
|
||||
module Native.List where
|
||||
/**
|
||||
module Native.List where
|
||||
|
||||
import Native.Function
|
||||
**/
|
||||
**/
|
||||
|
||||
(function() {
|
||||
"use strict";
|
||||
|
@ -34,7 +34,7 @@ import Native.Function
|
|||
function range(lo,hi) {
|
||||
var lst = Nil;
|
||||
if (lo <= hi) {
|
||||
do { lst = Cons(hi,lst) } while (hi-->lo);
|
||||
do { lst = Cons(hi,lst) } while (hi-->lo);
|
||||
}
|
||||
return lst
|
||||
}
|
||||
|
@ -119,7 +119,7 @@ import Native.Function
|
|||
}
|
||||
|
||||
function scanl1(f, xs) {
|
||||
xs.ctor === "Nil" ? throwError('scanl1') : return scanl(f, xs._0, xs._1);
|
||||
return xs.ctor === "Nil" ? throwError('scanl1') : scanl(f, xs._0, xs._1);
|
||||
}
|
||||
|
||||
function filter(pred, xs) {
|
||||
|
|
|
@ -30,7 +30,7 @@ import JSON
|
|||
}
|
||||
|
||||
var Tuple0 = { ctor: "Tuple0" }
|
||||
function Tuple2(x,y) { return { ctor = "Tuple2", _0:x, _1:y }; }
|
||||
function Tuple2(x,y) { return { ctor = "Tuple2", _0:x, _1:y } }
|
||||
|
||||
function makeSpaces(s) {
|
||||
if (s.length == 0) { return s; }
|
||||
|
|
|
@ -4,19 +4,17 @@ import Signal
|
|||
*/
|
||||
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
function inRange(min) { return function(max) {
|
||||
return Elm.Signal.constant(Math.floor(Math.random() * (max-min+1)) + min);
|
||||
};
|
||||
function inRange(min, max) {
|
||||
return Elm.Signal.constant(Math.floor(Math.random() * (max-min+1)) + min);
|
||||
}
|
||||
|
||||
function randomize(min) { return function(max) { return function(signal) {
|
||||
function f(x) { return Math.floor(Math.random() * (max-min+1)) + min; }
|
||||
return Elm.Signal.lift(f)(signal);
|
||||
};
|
||||
};
|
||||
function randomize(min, max, signal) {
|
||||
function f(x) { return Math.floor(Math.random() * (max-min+1)) + min; }
|
||||
return Elm.Signal.lift(f)(signal);
|
||||
}
|
||||
|
||||
Elm.Native.Random = { inRange:inRange, randomize:randomize };
|
||||
Elm.Native.Random = { inRange:F2(inRange), randomize: F3(randomize) };
|
||||
|
||||
}());
|
|
@ -8,45 +8,41 @@ import Maybe
|
|||
|
||||
function timeNow() { return (new window.Date).getTime(); }
|
||||
|
||||
function fpsWhen(desiredFPS) { return function (isOn) {
|
||||
var msPerFrame = 1000 / desiredFPS;
|
||||
var prev = timeNow(), curr = prev, diff = 0, wasOn = true;
|
||||
var ticker = Elm.Signal.constant(diff);
|
||||
function tick(zero) { return function() {
|
||||
curr = timeNow();
|
||||
diff = zero ? 0 : curr - prev;
|
||||
prev = curr;
|
||||
Dispatcher.notify(ticker.id, diff);
|
||||
};
|
||||
}
|
||||
var timeoutID = 0;
|
||||
function f(isOn) { return function(t) {
|
||||
if (isOn) {
|
||||
timeoutID = setTimeout(tick(!wasOn && isOn), msPerFrame);
|
||||
} else if (wasOn) {
|
||||
clearTimeout(timeoutID);
|
||||
}
|
||||
wasOn = isOn;
|
||||
return t;
|
||||
};
|
||||
}
|
||||
return Elm.Signal.lift2(f)(isOn)(ticker);
|
||||
};
|
||||
}
|
||||
|
||||
function everyWhen(isOn) { return function(t) {
|
||||
var clock = Elm.Signal.constant(timeNow());
|
||||
function tellTime() { Dispatcher.notify(clock.id, timeNow()); }
|
||||
setInterval(tellTime, t);
|
||||
return clock;
|
||||
};
|
||||
}
|
||||
|
||||
function since(t) { return function(s) {
|
||||
function cmp(a) { return function(b) { return !Value.eq(a,b); }; }
|
||||
var dcount = Elm.Signal.count(Elm.Signal.delay(t)(s));
|
||||
return Elm.Signal.lift2(cmp)(Elm.Signal.count(s))(dcount);
|
||||
function fpsWhen(desiredFPS, isOn) {
|
||||
var msPerFrame = 1000 / desiredFPS;
|
||||
var prev = timeNow(), curr = prev, diff = 0, wasOn = true;
|
||||
var ticker = Elm.Signal.constant(diff);
|
||||
function tick(zero) { return function() {
|
||||
curr = timeNow();
|
||||
diff = zero ? 0 : curr - prev;
|
||||
prev = curr;
|
||||
Dispatcher.notify(ticker.id, diff);
|
||||
};
|
||||
}
|
||||
var timeoutID = 0;
|
||||
function f(isOn, t) {
|
||||
if (isOn) {
|
||||
timeoutID = setTimeout(tick(!wasOn && isOn), msPerFrame);
|
||||
} else if (wasOn) {
|
||||
clearTimeout(timeoutID);
|
||||
}
|
||||
wasOn = isOn;
|
||||
return t;
|
||||
}
|
||||
return Elm.Signal.lift2(F2(f))(isOn)(ticker);
|
||||
}
|
||||
|
||||
function everyWhen(t, isOn) {
|
||||
var clock = Elm.Signal.constant(timeNow());
|
||||
function tellTime() { Dispatcher.notify(clock.id, timeNow()); }
|
||||
setInterval(tellTime, t);
|
||||
return clock;
|
||||
}
|
||||
|
||||
function since(t, s) {
|
||||
function cmp(a,b) { return !Value.eq(a,b) }
|
||||
var dcount = Elm.Signal.count(Elm.Signal.delay(t)(s));
|
||||
return Elm.Signal.lift2(F2(cmp))(Elm.Signal.count(s))(dcount);
|
||||
}
|
||||
function after(t) {
|
||||
t *= 1000;
|
||||
|
@ -65,11 +61,11 @@ import Maybe
|
|||
return isNaN(t) ? Elm.Maybe.Nothing : Elm.Maybe.Just(t);
|
||||
}
|
||||
Elm.Native.Time = {
|
||||
fpsWhen : fpsWhen,
|
||||
fps : function(t) { return fpsWhen(t)(Elm.Signal.constant(true)); },
|
||||
every : everyWhen(Elm.Signal.constant(true)),
|
||||
fpsWhen : F2(fpsWhen),
|
||||
fps : function(t) { return fpsWhen(t, Elm.Signal.constant(true)); },
|
||||
every : function(t) { return everyWhen(t, Elm.Signal.constant(true)) },
|
||||
delay : Elm.Signal.delay,
|
||||
since : since,
|
||||
since : F2(since),
|
||||
after : after,
|
||||
before : before,
|
||||
toDate : function(t) { return new window.Date(t); },
|
||||
|
|
Loading…
Reference in a new issue