META-INF.resources.observable.js Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of grooscript Show documentation
Show all versions of grooscript Show documentation
Grooscript converts your groovy code to javascript
function Observable() {
var gSobject = gs.inherit(gs.baseClass,'Observable');
gSobject.clazz = { name: 'org.grooscript.rx.Observable', simpleName: 'Observable'};
gSobject.clazz.superclass = { name: 'java.lang.Object', simpleName: 'Object'};
gSobject.subscribers = gs.list([]);
gSobject.sourceList = null;
gSobject.chain = gs.list([]);
gSobject.listen = function() { return Observable.listen(); }
gSobject.from = function(x0) { return Observable.from(x0); }
gSobject['produce'] = function(event) {
return gs.mc(gSobject.subscribers,"each",[function(it) {
return gs.mc(gSobject,"processFunction",[event, it]);
}]);
}
gSobject['map'] = function(cl) {
gs.mc(gSobject.chain,'leftShift', gs.list([cl]));
return this;
}
gSobject['filter'] = function(cl) {
gs.mc(gSobject.chain,'leftShift', gs.list([function(it) {
if (gs.execCall(cl, this, [it])) {
return it;
} else {
throw "Exception";
};
}]));
return this;
}
gSobject['subscribe'] = function(cl) {
while (gs.bool(gSobject.chain)) {
cl = (gs.mc(cl,'leftShift', gs.list([gs.mc(gSobject.chain,"remove",[gs.minus(gs.mc(gSobject.chain,"size",[]), 1)])])));
};
gs.mc(gSobject.subscribers,'leftShift', gs.list([cl]));
if (gs.bool(gSobject.sourceList)) {
return gs.mc(gSobject.sourceList,"each",[function(it) {
return gs.mc(gSobject,"processFunction",[it, cl]);
}]);
};
}
gSobject['removeSubscribers'] = function(it) {
return gSobject.subscribers = gs.list([]);
}
gSobject['processFunction'] = function(data, cl) {
try {
gs.execCall(cl, this, [data]);
}
catch (e) {
}
;
}
if (arguments.length == 1) {gs.passMapToObject(arguments[0],gSobject);};
return gSobject;
};
Observable.listen = function(it) {
return Observable();
}
Observable.from = function(list) {
return Observable(gs.map().add("sourceList",list));
}