00001 var baseRest = require('./_baseRest'), 00002 isIterateeCall = require('./_isIterateeCall'); 00003 00011 function createAssigner(assigner) { 00012 return baseRest(function(object, sources) { 00013 var index = -1, 00014 length = sources.length, 00015 customizer = length > 1 ? sources[length - 1] : undefined, 00016 guard = length > 2 ? sources[2] : undefined; 00017 00018 customizer = (assigner.length > 3 && typeof customizer == 'function') 00019 ? (length--, customizer) 00020 : undefined; 00021 00022 if (guard && isIterateeCall(sources[0], sources[1], guard)) { 00023 customizer = length < 3 ? undefined : customizer; 00024 length = 1; 00025 } 00026 object = Object(object); 00027 while (++index < length) { 00028 var source = sources[index]; 00029 if (source) { 00030 assigner(object, source, index, customizer); 00031 } 00032 } 00033 return object; 00034 }); 00035 } 00036 00037 module.exports = createAssigner;