29 lines
807 B
JavaScript
29 lines
807 B
JavaScript
|
/** @license MIT License (c) copyright 2010-2014 original author or authors */
|
||
|
/** @author Brian Cavalier */
|
||
|
/** @author John Hann */
|
||
|
|
||
|
(function(define) { 'use strict';
|
||
|
define(function() {
|
||
|
|
||
|
return function liftAll(liftOne, combine, dst, src) {
|
||
|
if(typeof combine === 'undefined') {
|
||
|
combine = defaultCombine;
|
||
|
}
|
||
|
|
||
|
return Object.keys(src).reduce(function(dst, key) {
|
||
|
var f = src[key];
|
||
|
return typeof f === 'function' ? combine(dst, liftOne(f), key) : dst;
|
||
|
}, typeof dst === 'undefined' ? defaultDst(src) : dst);
|
||
|
};
|
||
|
|
||
|
function defaultCombine(o, f, k) {
|
||
|
o[k] = f;
|
||
|
return o;
|
||
|
}
|
||
|
|
||
|
function defaultDst(src) {
|
||
|
return typeof src === 'function' ? src.bind() : Object.create(src);
|
||
|
}
|
||
|
});
|
||
|
}(typeof define === 'function' && define.amd ? define : function(factory) { module.exports = factory(); }));
|