@interaction/eagle
Version:
JavaScript library
35 lines (26 loc) • 766 B
JavaScript
var _isArray = /*#__PURE__*/require("./_isArray");
var _isTransformer = /*#__PURE__*/require("./_isTransformer");
function _dispatchable(methodNames, xf, fn) {
return function () {
if (arguments.length === 0) {
return fn();
}
var args = Array.prototype.slice.call(arguments, 0);
var obj = args.pop();
if (!_isArray()) {
var idx = 0;
while (idx < methodNames.length) {
if (typeof obj[methodNames[idx]] === 'function') {
return obj[methodNames[idx]].apply(obj, args);
}
idx += 1;
}
if (_isTransformer(obj)) {
var transducer = xf.apply(null, args);
return transducer;
}
}
return fn.apply(this, arguments);
};
}
module.exports = _dispatchable;