Convert the random and touch modules to the new format.

This commit is contained in:
evancz 2013-03-08 22:57:13 -08:00
parent f70fdaa300
commit ccf9917f2e
2 changed files with 27 additions and 25 deletions

View file

@ -1,20 +1,21 @@
/* Elm.Native.Random = function(elm) {
import Signal
*/
(function() {
'use strict'; 'use strict';
elm.Native = elm.Native || {};
if (elm.Native.Random) return elm.Native.Random;
function inRange(min, max) { var Signal = Elm.Signal(elm);
return Elm.Signal.constant(Math.floor(Math.random() * (max-min+1)) + min);
}
function randomize(min, max, signal) { function range(min, max, signal) {
function f(x) { return Math.floor(Math.random() * (max-min+1)) + min; } function f(x) { return Math.floor(Math.random() * (max-min+1)) + min; }
return Elm.Signal.lift(f)(signal); return A2( Signal.lift, f, signal );
} }
Elm.Native.Random = { inRange:F2(inRange), randomize: F3(randomize) }; function float(signal) {
function f(x) { return Math.random() }
return A2( Signal.lift, f, signal );
}
}()); return elm.Native.Random = { range: F3(randomize), float: float };
};

View file

@ -1,11 +1,13 @@
/*
import Signal
import JavaScript
*/
(function() { Elm.Native.Touch = function(elm) {
'use strict'; 'use strict';
elm.Native = elm.Native || {};
if (elm.Native.Touch) return elm.Native.Touch;
var Signal = Elm.Signal(elm);
var JS = Elm.JavaScript(elm);
function Dict() { function Dict() {
this.keys = []; this.keys = [];
this.values = []; this.values = [];
@ -28,7 +30,7 @@ import JavaScript
}; };
} }
var root = Elm.Signal.constant([]), var root = Signal.constant([]),
tapTime = 500, tapTime = 500,
hasTap = false, hasTap = false,
tap = {_:{},x:0,y:0}, tap = {_:{},x:0,y:0},
@ -76,24 +78,23 @@ import JavaScript
listen("touchleave", end); listen("touchleave", end);
function dependency(f) { function dependency(f) {
var sig = Elm.Signal.lift(f)(root); var sig = A2( Signal.lift, f, root );
root.defaultNumberOfKids += 1; root.defaultNumberOfKids += 1;
sig.defaultNumberOfKids = 0; sig.defaultNumberOfKids = 0;
return sig; return sig;
} }
var touches = dependency(function(ts) { var touches = dependency(JS.fromList);
return Elm.JavaScript.castJSArrayToList(ts);
});
var taps = function() { var taps = function() {
var sig = dependency(function(_) { return tap; }); var sig = dependency(function(_) { return tap; });
sig.defaultNumberOfKids = 1; sig.defaultNumberOfKids = 1;
function pred(_) { var b = hasTap; hasTap = false; return b; } function pred(_) { var b = hasTap; hasTap = false; return b; }
var sig2 = Elm.Signal.keepIf(pred)({_:{},x:0,y:0})(sig); var sig2 = A3( Signal.keepIf, pred, {_:{},x:0,y:0}, sig);
sig2.defaultNumberOfKids = 0; sig2.defaultNumberOfKids = 0;
return sig2; return sig2;
}(); }();
Elm.Native.Touch = { touches: touches, taps: taps }; return elm.Native.Touch = { touches: touches, taps: taps };
}());
};