Skip to content

Instantly share code, notes, and snippets.

@alexeyraspopov
Created June 24, 2014 16:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alexeyraspopov/f796a055ee6251df472b to your computer and use it in GitHub Desktop.
Save alexeyraspopov/f796a055ee6251df472b to your computer and use it in GitHub Desktop.
var data = require('./index');
function wrapper(process){
var observable, wrapper;
observable = data();
wrapper = function(value){
return arguments.length ? process(observable, value) : observable();
};
wrapper.subscribe = observable.subscribe;
wrapper.bind = observable.bind;
return wrapper;
}
function map(morphism){
return wrapper(function(observable, value){
return observable(morphism(value));
});
}
function filter(predicate){
return wrapper(function(observable, value){
return predicate(value) && observable(value);
});
}
function unique(){
var memo;
return wrapper(function(observable, value){
if(memo !== value){
memo = value;
observable(value);
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment