UNPKG

cfy

Version:

Use generators and yield to write regular callback-based functions

215 lines (214 loc) 6.76 kB
// Generated by LiveScript 1.5.0 (function(){ var co, unthenify, add_noerr, yfy, yfy_node, yfy_multi, yfy_multi_node, cfy, cfy_varargs, cfy_node, cfy_varargs_node, k, ref$, v, out$ = typeof exports != 'undefined' && exports || this, slice$ = [].slice; co = require('co'); unthenify = require('unthenify'); out$.add_noerr = add_noerr = function(callback){ return function(cb){ return callback(function(res){ return cb(null, res); }); }; }; out$.yfy = yfy = function(f){ return function(){ var functionArguments, res$, i$, to$, self; res$ = []; for (i$ = 0, to$ = arguments.length; i$ < to$; ++i$) { res$.push(arguments[i$]); } functionArguments = res$; self = this; return new Promise(function(resolve, reject){ var callbackFunction; callbackFunction = function(){ var args, res$, i$, to$; res$ = []; for (i$ = 0, to$ = arguments.length; i$ < to$; ++i$) { res$.push(arguments[i$]); } args = res$; return resolve(args[0]); }; functionArguments.push(callbackFunction); return f.apply(self, functionArguments); }); }; }; out$.yfy_node = yfy_node = function(f){ return function(){ var functionArguments, res$, i$, to$, self; res$ = []; for (i$ = 0, to$ = arguments.length; i$ < to$; ++i$) { res$.push(arguments[i$]); } functionArguments = res$; self = this; return new Promise(function(resolve, reject){ var callbackFunction; callbackFunction = function(){ var args, res$, i$, to$, err; res$ = []; for (i$ = 0, to$ = arguments.length; i$ < to$; ++i$) { res$.push(arguments[i$]); } args = res$; err = args[0]; if (err) { return reject(err); } return resolve(args[1]); }; functionArguments.push(callbackFunction); return f.apply(self, functionArguments); }); }; }; out$.yfy_multi = yfy_multi = function(f){ return function(){ var functionArguments, res$, i$, to$, self; res$ = []; for (i$ = 0, to$ = arguments.length; i$ < to$; ++i$) { res$.push(arguments[i$]); } functionArguments = res$; self = this; return new Promise(function(resolve, reject){ var callbackFunction; callbackFunction = function(){ var args, res$, i$, to$; res$ = []; for (i$ = 0, to$ = arguments.length; i$ < to$; ++i$) { res$.push(arguments[i$]); } args = res$; return resolve(args); }; functionArguments.push(callbackFunction); return f.apply(self, functionArguments); }); }; }; out$.yfy_multi_node = yfy_multi_node = function(f){ return function(){ var functionArguments, res$, i$, to$, self; res$ = []; for (i$ = 0, to$ = arguments.length; i$ < to$; ++i$) { res$.push(arguments[i$]); } functionArguments = res$; self = this; return new Promise(function(resolve, reject){ var callbackFunction; callbackFunction = function(){ var args, res$, i$, to$, err; res$ = []; for (i$ = 0, to$ = arguments.length; i$ < to$; ++i$) { res$.push(arguments[i$]); } args = res$; err = args[0]; if (err) { return reject(err); } return resolve(args.slice(1)); }; functionArguments.push(callbackFunction); return f.apply(self, functionArguments); }); }; }; out$.cfy = cfy = function(f, options){ var num_args, wrapped; num_args = f.length; if (options != null) { if (options.varargs != null) { return cfy_varargs(f); } if (options.num_args != null) { num_args = options.num_args; } } wrapped = co.wrap(f); return function(){ var i$, args, res$, j$, callback; res$ = []; for (j$ = 0 < (i$ = arguments.length - 1) ? 0 : (i$ = 0); j$ < i$; ++j$) { res$.push(arguments[j$]); } args = res$; callback = arguments[i$]; if (args.length === num_args && typeof callback === 'function') { return wrapped.bind(this).apply(null, args).then(callback); } else { return wrapped.bind(this).apply(null, slice$.call(args).concat([callback])); } }; }; cfy_varargs = function(f){ var wrapped; wrapped = co.wrap(f); return function(){ var i$, args, res$, j$, callback; res$ = []; for (j$ = 0 < (i$ = arguments.length - 1) ? 0 : (i$ = 0); j$ < i$; ++j$) { res$.push(arguments[j$]); } args = res$; callback = arguments[i$]; if (typeof callback === 'function') { return wrapped.bind(this).apply(null, args).then(callback); } else { return wrapped.bind(this).apply(null, slice$.call(args).concat([callback])); } }; }; out$.cfy_node = cfy_node = function(f, options){ var num_args, wrapped, wrapped_cb; num_args = f.length; if (options != null) { if (options.varargs != null) { return cfy_varargs_node(f); } if (options.num_args != null) { num_args = options.num_args; } } wrapped = co.wrap(f); wrapped_cb = unthenify(wrapped); return function(){ var i$, args, res$, j$, callback; res$ = []; for (j$ = 0 < (i$ = arguments.length - 1) ? 0 : (i$ = 0); j$ < i$; ++j$) { res$.push(arguments[j$]); } args = res$; callback = arguments[i$]; if (args.length === num_args && typeof callback === 'function') { return wrapped_cb.bind(this).apply(null, slice$.call(args).concat([callback])); } else { return wrapped.bind(this).apply(null, slice$.call(args).concat([callback])); } }; }; cfy_varargs_node = function(f){ var wrapped, wrapped_cb; wrapped = co.wrap(f); wrapped_cb = unthenify(wrapped); return function(){ var i$, args, res$, j$, callback; res$ = []; for (j$ = 0 < (i$ = arguments.length - 1) ? 0 : (i$ = 0); j$ < i$; ++j$) { res$.push(arguments[j$]); } args = res$; callback = arguments[i$]; if (typeof callback === 'function') { return wrapped_cb.bind(this).apply(null, slice$.call(args).concat([callback])); } else { return wrapped.bind(this).apply(null, slice$.call(args).concat([callback])); } }; }; for (k in ref$ = module.exports) { v = ref$[k]; cfy[k] = v; } module.exports = cfy; }).call(this);