Skip to content

Instantly share code, notes, and snippets.

@vmysla
Last active August 29, 2015 14:25
Show Gist options
  • Save vmysla/ab5e67ac0bf3e8de15dd to your computer and use it in GitHub Desktop.
Save vmysla/ab5e67ac0bf3e8de15dd to your computer and use it in GitHub Desktop.
(function(signal){
signal({
colors : 9,
ttl : 1000,
latency : 250
});
})(function(conf){
var counters = storage.curry(conf.colors),
history = storage(conf.ttl/conf.latency);
var curr = counters(),
next = counters(),
prev = history.map(counters);
function storage(size){
return [].slice.apply( new Uint32Array(size) );
}
/// @exports:
this.signal = function(color){
return ++next[color] && curr;
}
});
/// @usage:
console.log( 'signal response:', signal(1) );
/// @require:
Function.prototype.curry = function () {
var fn = this, args = Array.prototype.slice.call(arguments);
return function () {
return fn.apply(this, args.concat(
Array.prototype.slice.call(arguments)
)
);
};
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment