fhir.js
Version:
FHIR javascript client
67 lines (63 loc) • 1.66 kB
JavaScript
// Generated by CoffeeScript 1.9.3
(function() {
exports.stepBuilder = function(q) {
return function(name, fn) {
return function(state) {
var d, next;
d = q.defer();
console.log("Step [" + name + "]: start");
next = function(newSt) {
state[name] = newSt;
console.log("Step [" + name + "]: complete");
return d.resolve(state);
};
fn(next, state);
return d.promise;
};
};
};
exports.checkStep = function(q) {
return function(name, fn) {
return function(state) {
var d;
d = q.defer();
console.log("Step [" + name + "]: check");
fn(state, state[name]);
d.resolve(state);
return d.promise;
};
};
};
// simple defer impl for tests
exports.defer = function(){
var pr = {
_status: 'pending',
_cb: null,
then: function(cb, err){
if(this._status == 'resolved'){
cb(this._payload);
}
else if(this._status == 'errored'){
(err || cb)(this._payload);
}else{
this.cb = cb;
this.err = err || cb;
}
return pr;
}
};
return {
reject: function(e){
pr._status = 'errored';
pr._payload = e;
pr.err && pr.err(e);
},
resolve: function(obj){
pr._status = 'resolved';
pr._payload = obj;
pr.cb && pr.cb(obj);
},
promise: pr
};
};
}).call(this);