diff --git a/build.js b/build.js index f402d37d0..f890a13e5 100755 --- a/build.js +++ b/build.js @@ -28,6 +28,7 @@ var aliasToRealMap = { 'all': 'every', 'any': 'some', + 'assign': 'extend', 'collect': 'map', 'detect': 'find', 'drop': 'rest', @@ -48,6 +49,7 @@ var realToAliasMap = { 'contains': ['include'], 'every': ['all'], + 'extend': ['assign'], 'filter': ['select'], 'find': ['detect'], 'first': ['head', 'take'], @@ -229,6 +231,7 @@ /** List of methods used by Underscore */ var underscoreMethods = _.without.apply(_, [allMethods].concat([ + 'assign', 'forIn', 'forOwn', 'isPlainObject', @@ -615,13 +618,10 @@ var modified, snippet = matchFunction(source, funcName); - // exit early if function is not found - if (!snippet) { - return source; - } // remove function - source = source.replace(snippet, ''); - + if (snippet) { + source = source.replace(snippet, ''); + } // grab the method assignments snippet snippet = getMethodAssignments(source); @@ -947,7 +947,8 @@ var useUnderscoreClone = isUnderscore; // flags used to specify exposing Lo-Dash methods in an Underscore build - var exposeForIn = !isUnderscore, + var exposeAssign = !isUnderscore, + exposeForIn = !isUnderscore, exposeForOwn = !isUnderscore, exposeIsPlainObject = !isUnderscore; @@ -969,6 +970,20 @@ : accumulator; }, []); + // add method names explicitly + options.some(function(value) { + return /include/.test(value) && + (result = getDependencies(optionToMethodsArray(source, value))); + }); + + // include Lo-Dash's methods if explicitly requested + if (isUnderscore && result) { + exposeAssign = result.indexOf('assign') > -1; + exposeForIn = result.indexOf('forIn') > -1; + exposeForOwn = result.indexOf('forOwn') > -1; + exposeIsPlainObject = result.indexOf('isPlainObject') > -1; + useUnderscoreClone = result.indexOf('clone') < 0; + } // update dependencies if (isMobile) { dependencyMap.reduceRight = ['forEach', 'keys']; @@ -986,19 +1001,6 @@ dependencyMap.clone = ['extend', 'isArray']; } } - // add method names explicitly - options.some(function(value) { - return /include/.test(value) && - (result = getDependencies(optionToMethodsArray(source, value))); - }); - - // include Lo-Dash's methods if explicitly requested - if (result) { - exposeForIn = result.indexOf('forIn') > -1; - exposeForOwn = result.indexOf('forOwn') > -1; - exposeIsPlainObject = result.indexOf('isPlainObject') > -1; - useUnderscoreClone = result.indexOf('clone') < 0; - } // add method names required by Backbone and Underscore builds if (isBackbone && !result) { result = getDependencies(backboneDependencies); @@ -1106,6 +1108,24 @@ ' }' ].join('\n')); + // replace `_.extend` + source = source.replace(/^( *)var extend *= *createIterator[\s\S]+?\);/m, [ + ' function extend(object) {', + ' if (!object) {', + ' return object;', + ' }', + ' for (var argsIndex = 1, argsLength = arguments.length; argsIndex < argsLength; argsIndex++) {', + ' var iteratee = arguments[argsIndex];', + ' if (iteratee) {', + ' for (var key in iteratee) {', + ' object[key] = iteratee[key];', + ' }', + ' }', + ' }', + ' return object;', + ' }' + ].join('\n')); + // replace `_.intersection` source = source.replace(/^( *)function intersection[\s\S]+?\n\1}/m, [ ' function intersection(array) {', @@ -1289,6 +1309,9 @@ } }); + if (!exposeAssign) { + source = removeFunction(source, 'assign'); + } // remove `isArguments` fallback before `isArguments` is transformed by // other parts of the build process if (isRemoved(source, 'isArguments')) { diff --git a/build/pre-compile.js b/build/pre-compile.js index 1c13cef96..d692e657b 100644 --- a/build/pre-compile.js +++ b/build/pre-compile.js @@ -13,6 +13,7 @@ 'collection', 'createCallback', 'ctor', + 'guard', 'hasOwnProperty', 'index', 'isArguments', @@ -27,6 +28,7 @@ 'propertyIsEnumerable', 'result', 'skipProto', + 'source', 'thisArg', 'value' ]; @@ -63,6 +65,7 @@ 'all', 'amd', 'any', + 'assign', 'attachEvent', 'bind', 'bindAll', @@ -212,7 +215,7 @@ return source; } - // remove copyright to add later in post-compile.js + // remove copyright/license header to add later in post-compile.js source = source.replace(/\/\*![\s\S]+?\*\//, ''); // add brackets to whitelisted properties so the Closure Compiler won't mung them diff --git a/lodash.js b/lodash.js index c8fa41289..7a4341277 100644 --- a/lodash.js +++ b/lodash.js @@ -430,10 +430,10 @@ /** Reusable iterator options for `defaults`, and `extend` */ var extendIteratorOptions = { 'useHas': false, - 'args': 'object', + 'args': 'object, source, guard', 'top': - 'for (var argsIndex = 1, argsLength = arguments.length; argsIndex < argsLength; argsIndex++) {\n' + - ' if (iteratee = arguments[argsIndex]) {', + 'for (var argsIndex = 1, argsLength = typeof guard == \'number\' ? 2 : arguments.length; argsIndex < argsLength; argsIndex++) {\n' + + ' if ((iteratee = arguments[argsIndex])) {', 'objectLoop': 'result[index] = value', 'bottom': ' }\n}' }; @@ -987,6 +987,7 @@ * * @static * @memberOf _ + * @alias assign * @category Objects * @param {Object} object The destination object. * @param {Object} [source1, source2, ...] The source objects. @@ -4176,6 +4177,7 @@ // assign aliases lodash.all = every; lodash.any = some; + lodash.assign = extend; lodash.collect = map; lodash.detect = find; lodash.drop = rest; diff --git a/lodash.min.js b/lodash.min.js index fac7f1919..b5135cb2d 100644 --- a/lodash.min.js +++ b/lodash.min.js @@ -4,8 +4,8 @@ */ ;(function(e,t){function s(e){if(e&&e.__wrapped__)return e;if(!(this instanceof s))return new s(e);this.__wrapped__=e}function o(e,t,n){t||(t=0);var r=e.length,i=r-t>=(n||Y);if(i)for(var s={},n=t-1;++nn||e===t)return 1;if(ei;i++)r+="h='"+e.j[i]+"';if(","constructor"==e.j[i]&&(r+="!(f&&f.prototype===k)&&"),r+="g.call(k,h)){v=k[h];"+e.g+"}"}if(e.b||e.h)r+="}";return r+=e.c+";return s",Function("e,g,i,j,o,m,r","return function("+t+"){"+r+"}")(l,yt,m,N,Gt,kt,wt)}function h(e){return"\\"+Yt[e]}function p +.exec(t)[0],r="var i,x,l="+e.d+",t="+e.d+";if(!"+e.d+")return t;"+e.k+";",e.b?(r+="var m=l.length;i=-1;if(typeof m=='number'){",e.i&&(r+="if(k(l)){l=l.split('')}"),r+="while(++ii;i++)r+="i='"+e.j[i]+"';if(","constructor"==e.j[i]&&(r+="!(f&&f.prototype===l)&&"),r+="h.call(l,i)){x=l[i];"+e.g+"}"}if(e.b||e.h)r+="}";return r+=e.c+";return t",Function("e,h,j,k,p,n,s","return function("+t+"){"+r+"}")(l,yt,m,N,Gt,kt,wt)}function h(e){return"\\"+Yt[e]}function p (e){return sn[e]}function d(){}function v(e){return on[e]}function m(e){return St.call(e)==Mt}function g(e){var t=i;if(!e||"object"!=typeof e||m(e))return t;var n=e.constructor;return(!Vt||"function"==typeof e.toString||"string"!=typeof (e+""))&&(!x(n)||n instanceof n)?qt?(nn(e,function(e,n,r){return t=!yt.call(r,n),i}),t===i):(nn(e,function(e,n){t=n}),t===i||yt.call(e,t)):t}function y(e){var t=[];return rn(e,function(e,n){t.push(n)}),t}function b(e,t,n,s,o){if(e==r)return e;n&&(t=i);if(n=T(e)){var u= St.call(e);if(!Qt[u]||zt&&m(e))return e;var a=u==_t,n=a||(u==Bt?ln(e):n)}if(!n||!t)return n?a?Et.call(e):an({},e):e;n=e.constructor;switch(u){case Dt:case Pt:return new n(+e);case Ht:case Ft:return new n(e);case jt:return n(e.source,st.exec(e))}s||(s=[]),o||(o=[]);for(u=s.length;u--;)if(s[u]==e)return o[u];var f=a?n(e.length):{};return s.push(e),o.push(f),(a?hn:rn)(e,function(e,n){f[n]=b(e,t,r,s,o)}),f}function w(e){var t=[];return nn(e,function(e,n){x(e)&&t.push(n)}),t.sort()}function E(e){var t= {};return rn(e,function(e,n){t[e]=n}),t}function S(e,t,s,o){if(e===t)return 0!==e||1/e==1/t;if(e==r||t==r)return e===t;var u=St.call(e);if(u!=St.call(t))return i;switch(u){case Dt:case Pt:return+e==+t;case Ht:return e!=+e?t!=+t:0==e?1/e==1/t:e==+t;case jt:case Ft:return e==t+""}var a=u==_t||u==Mt;if(zt&&!a&&(a=m(e))&&!m(t))return i;if(!a){if(e.__wrapped__||t.__wrapped__)return S(e.__wrapped__||e,t.__wrapped__||t);if(u!=Bt||Vt&&("function"!=typeof e.toString&&"string"==typeof (e+"")||"function"!=typeof @@ -20,13 +20,13 @@ i=r+1:s=r;return i}function z(e,t,n,r){var s=-1,o=e?e.length:0,u=[],a=u;"functio ,ut=RegExp("^"+(Q.valueOf+"").replace(/[.*+?^=!:${}()|[\]\/\\]/g,"\\$&").replace(/valueOf|for [^\]]+/g,".+?")+"$"),at=/\$\{((?:(?=\\?)\\?[\s\S])*?)}/g,ft=/<%=([\s\S]+?)%>/g,lt=/($^)/,ct=/[&<>"']/g,ht=/['\n\r\t\u2028\u2029\\]/g,pt="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),dt=Math.ceil,vt=K.concat,mt=Math.floor,gt=ut.test(gt=Object.getPrototypeOf)&>,yt=Q.hasOwnProperty,bt=K.push,wt=Q.propertyIsEnumerable,Et=K.slice,St=Q.toString,xt= ut.test(xt=Et.bind)&&xt,Tt=ut.test(Tt=Array.isArray)&&Tt,Nt=e.isFinite,Ct=e.isNaN,kt=ut.test(kt=Object.keys)&&kt,Lt=Math.max,At=Math.min,Ot=Math.random,Mt="[object Arguments]",_t="[object Array]",Dt="[object Boolean]",Pt="[object Date]",Ht="[object Number]",Bt="[object Object]",jt="[object RegExp]",Ft="[object String]",It,qt,Rt=(Rt={0:1,length:1},K.splice.call(Rt,0,1),Rt[0]),Ut=n;(function(){function e(){this.x=1}var t=[];e.prototype={valueOf:1,y:1};for(var n in new e)t.push(n);for(n in arguments )Ut=!n;It=!/valueOf/.test(t),qt="x"!=t[0]})(1);var zt=!m(arguments),Wt="x"!=Et.call("x")[0],Xt="xx"!="x"[0]+Object("x")[0];try{var Vt=("[object Object]",St.call(e.document||0)==Bt)}catch($t){}var Jt=xt&&/\n|Opera/.test(xt+St.call(e.opera)),Kt=kt&&/^.+$|true/.test(kt+!!e.attachEvent),Qt={};Qt[Mt]=Qt["[object Function]"]=i,Qt[_t]=Qt[Dt]=Qt[Pt]=Qt[Ht]=Qt[Bt]=Qt[jt]=Qt[Ft]=n;var Gt={"boolean":i,"function":n,object:n,number:i,string:i,"undefined":i},Yt={"\\":"\\","'":"'","\n":"n","\r":"r"," ":"t","\u2028" -:"u2028","\u2029":"u2029"};s.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:ft,variable:""};var Zt={a:"d,c,u",k:"c=e(c,u)",b:"if(c(v,h,d)===false)return s",g:"if(c(v,h,d)===false)return s"},en={l:i,a:"n",k:"for(var a=1,b=arguments.length;a":">",'"':""","'":"'"},on=E(sn),un=c(en,{ -g:"if(s[h]==null)"+en.g}),an=c(en),fn=Tt||function(e){return St.call(e)==_t};x(/x/)&&(x=function(e){return"[object Function]"==St.call(e)});var ln=gt?function(e){if(!e||"object"!=typeof e)return i;var t=e.valueOf,n="function"==typeof t&&(n=gt(t))&>(n);return n?e==n||gt(e)==n&&!m(e):g(e)}:g,cn=kt?function(e){return"function"==typeof e&&wt.call(e,"prototype")?y(e):T(e)?kt(e):[]}:y,hn=c(Zt);s.VERSION="0.9.2",s.after=function(e,t){return 1>e?t():function(){if(1>--e)return t.apply(this,arguments)}}, -s.bind=W,s.bindAll=function(e){for(var t=arguments,n=1q(i,e)){for(var s=n;--s;)if(!(r[s]||(r[s]=o(t[s])))(e))return;i.push(e)}}),i},s.invert=E,s.invoke=function(e,t){var n=Et.call(arguments,2),r="function"==typeof t,i=[];return hn(e,function(e){i.push((r?t:e[t]).apply(e,n))}),i},s.isArguments=m,s.isArray=fn,s.isBoolean=function(e){return e===n||e===i||St.call(e)==Dt},s.isDate=function(e){return St.call(e)==Pt},s.isElement=function(e){return e?1===e. -nodeType:i},s.isEmpty=function(e){var t=n;if(!e)return t;var r=St.call(e),s=e.length;return r==_t||r==Ft||r==Mt||zt&&m(e)||r==Bt&&"number"==typeof s&&x(e.splice)?!s:(rn(e,function(){return t=i}),t)},s.isEqual=S,s.isFinite=function(e){return Nt(e)&&!Ct(parseFloat(e))},s.isFunction=x,s.isNaN=function(e){return St.call(e)==Ht&&e!=+e},s.isNull=function(e){return e===r},s.isNumber=function(e){return St.call(e)==Ht},s.isObject=T,s.isPlainObject=ln,s.isRegExp=function(e){return St.call(e)==jt},s.isString= +:"u2028","\u2029":"u2029"};s.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:ft,variable:""};var Zt={a:"d,c,w",k:"c=e(c,w)",b:"if(c(x,i,d)===false)return t",g:"if(c(x,i,d)===false)return t"},en={l:i,a:"o,v,g",k:"for(var a=1,b=typeof g=='number'?2:arguments.length;a":">",'"':""","'":"'" +},on=E(sn),un=c(en,{g:"if(t[i]==null)"+en.g}),an=c(en),fn=Tt||function(e){return St.call(e)==_t};x(/x/)&&(x=function(e){return"[object Function]"==St.call(e)});var ln=gt?function(e){if(!e||"object"!=typeof e)return i;var t=e.valueOf,n="function"==typeof t&&(n=gt(t))&>(n);return n?e==n||gt(e)==n&&!m(e):g(e)}:g,cn=kt?function(e){return"function"==typeof e&&wt.call(e,"prototype")?y(e):T(e)?kt(e):[]}:y,hn=c(Zt);s.VERSION="0.9.2",s.after=function(e,t){return 1>e?t():function(){if(1>--e)return t.apply +(this,arguments)}},s.bind=W,s.bindAll=function(e){for(var t=arguments,n=1q(i,e)){for(var s=n;--s;)if(!(r[s]||(r[s]=o(t[s])))(e))return;i.push(e)}}),i},s.invert=E,s.invoke=function(e,t){var n=Et.call(arguments,2),r="function"==typeof t,i=[];return hn(e,function(e){i.push((r?t:e[t]).apply(e,n))}),i},s.isArguments=m,s.isArray=fn,s.isBoolean=function(e){return e===n||e===i||St.call(e)==Dt},s.isDate=function(e){return St.call(e)==Pt},s.isElement=function(e){return e?1=== +e.nodeType:i},s.isEmpty=function(e){var t=n;if(!e)return t;var r=St.call(e),s=e.length;return r==_t||r==Ft||r==Mt||zt&&m(e)||r==Bt&&"number"==typeof s&&x(e.splice)?!s:(rn(e,function(){return t=i}),t)},s.isEqual=S,s.isFinite=function(e){return Nt(e)&&!Ct(parseFloat(e))},s.isFunction=x,s.isNaN=function(e){return St.call(e)==Ht&&e!=+e},s.isNull=function(e){return e===r},s.isNumber=function(e){return St.call(e)==Ht},s.isObject=T,s.isPlainObject=ln,s.isRegExp=function(e){return St.call(e)==jt},s.isString= N,s.isUndefined=function(e){return e===t},s.keys=cn,s.last=function(e,t,n){if(e){var i=e.length;return t==r||n?e[i-1]:Et.call(e,-t||i)}},s.lastIndexOf=function(e,t,n){var r=e?e.length:0;for("number"==typeof n&&(r=(0>n?Lt(0,r+n):At(n,r-1))+1);r--;)if(e[r]===t)return r;return-1},s.lateBind=function(e,t){return f(t,e,Et.call(arguments,2))},s.map=_,s.max=D,s.memoize=function(e,t){var n={};return function(){var r=t?t.apply(this,arguments):arguments[0];return yt.call(n,r)?n[r]:n[r]=e.apply(this,arguments )}},s.merge=C,s.min=function(e,t,n){var r=Infinity,i=-1,s=e?e.length:0,o=r;if(t||!fn(e))t=!t&&N(e)?u:l(t,n),hn(e,function(e,n,i){n=t(e,n,i),nq(s,n,1))i[n]=e}),i},s.once=function(e){var t,s=i;return function(){return s?t:(s=n,t=e.apply(this,arguments),e=r,t)}},s.pairs=function(e){var t=[];return rn(e,function(e,n){t.push([n,e])}),t},s.partial=function(e){return f(e,Et.call(arguments,1))},s.pick=function(e,t,n){var r={};if("function"!=typeof t)for(var i=0,s=vt.apply(K,arguments),o=s.length;++i=f?(clearTimeout(u),a=r,s=e.apply(o,i)):u||(u=setTimeout(n,f)),s}},s.times=function(e,t,n){for(var e=+e||0,r=-1,i=Array(e);++ rn||e===t)return 1;if(er&&(r=n,u=e)});else for(;++iu&&(u=e[i]);return u}function T(e,t){var n=[];return kt(e,function(e){n.push(e[t])}),n}function N(e,t,n,r){var i=3>arguments.length,t=s(t,r);return kt(e,function(e,r,s){n=i?(i=!1,e):t(n,e,r,s)}),n}function C(e,t,n,r){var i=e?e.length:0,s=3>arguments.length;if("number"!=typeof i)var o=Ct(e),i=o.length;return kt(e,function(u,a,f){a=o?o[--i]:--i,n=s?(s=!1,e[a]):t.call -(r,n,e[a],a,f)}),n}function k(e,t,n){var r,t=s(t,n);if(Nt(e))for(var n=-1,i=e.length;++nn?st(0,i+n):n||0)-1;else if(n)return r=_(e,t),e[r]===t?r:-1;for(;++r>>1,n(e[r])O(a,f))n&&a.push(f),u.push(r)}return u}function P(e,t){return mt||tt&&2"']/g,$=/['\n\r\t\u2028\u2029\\]/g -,J=Math.ceil,K=I.concat,Q=Math.floor,G=F.hasOwnProperty,Y=I.push,Z=I.slice,et=F.toString,tt=W.test(tt=Z.bind)&&tt,nt=W.test(nt=Array.isArray)&&nt,rt=e.isFinite,it=W.test(it=Object.keys)&&it,st=Math.max,ot=Math.min,ut=Math.random,at="[object Array]",ft="[object Boolean]",lt="[object Date]",ct="[object Number]",ht="[object Object]",pt="[object RegExp]",dt="[object String]",vt=(vt={0:1,length:1},I.splice.call(vt,0,1),vt[0]),mt=tt&&/\n|Opera/.test(tt+et.call(e.opera)),gt={"boolean":!1,"function":!0,object -:!0,number:!1,string:!1,"undefined":!1},yt={"\\":"\\","'":"'","\n":"n","\r":"r"," ":"t","\u2028":"u2028","\u2029":"u2029"};n.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""},n.isArguments=function(e){return"[object Arguments]"==et.call(e)},n.isArguments(arguments)||(n.isArguments=function(e){return e?G.call(e,"callee"):!1});var bt=function(e,t){var n,r;if(!e)return e;t=s(t);for(n in e)if(r=e[n],t(r,n,e)===R)break;return e},wt=function( -e,t){var n,r;if(!e)return e;t=s(t);for(n in e)if(G.call(e,n)&&(r=e[n],t(r,n,e)===R))break;return e},Et={"&":"&","<":"<",">":">",'"':""","'":"'"},St=h(Et),xt=function(e){var t,n,r=e;if(!e)return e;for(var i=1,s=arguments.length;ie?t():function(){if(1>--e)return t.apply(this,arguments)}},n.bind=P,n.bindAll=function(e){for(var t=arguments,n=1O(r,s,n)&&i.push(s)}return i},n.escape=function(e){return null==e?"":(e+"").replace(V,u)},n.every=b,n.extend=Tt,n.filter=w,n.find=E,n.first=L,n.flatten=A,n.forEach=kt,n.functions=c,n.groupBy=function(e,t,n){var r={},t=s(t,n);return kt(e,function(e,n,i){n=t(e,n,i),(G.call(r,n)?r[n]:r[n]=[]).push(e)}),r},n.has=function(e,t){return e?G.call(e,t):!1},n.identity=H,n.indexOf=O,n.initial=function(e,t,n){return e?Z.call(e,0,-(null==t||n?1:t)):[]},n.intersection=function(e){var t=arguments,n=t.length -,r=[];return kt(e,function(e){if(0>O(r,e)){for(var i=n;--i;)if(0>O(t[i],e))return;r.push(e)}}),r},n.invert=h,n.invoke=function(e,t){var n=Z.call(arguments,2),r="function"==typeof t,i=[];return kt(e,function(e){i.push((r?t:e[t]).apply(e,n))}),i},n.isArray=Nt,n.isBoolean=function(e){return!0===e||!1===e||et.call(e)==ft},n.isDate=function(e){return et.call(e)==lt},n.isElement=function(e){return e?1===e.nodeType:!1},n.isEmpty=function(e){if(!e)return!0;if(Nt(e)||m(e))return!e.length;for(var t in e)if( -G.call(e,t))return!1;return!0},n.isEqual=p,n.isFinite=function(e){return rt(e)&&et.call(e)==ct},n.isFunction=d,n.isNaN=function(e){return et.call(e)==ct&&e!=+e},n.isNull=function(e){return null===e},n.isNumber=function(e){return et.call(e)==ct},n.isObject=v,n.isRegExp=function(e){return et.call(e)==pt},n.isString=m,n.isUndefined=function(e){return e===t},n.keys=Ct,n.last=function(e,t,n){if(e){var r=e.length;return null==t||n?e[r-1]:Z.call(e,-t||r)}},n.lastIndexOf=function(e,t,n){var r=e?e.length:0 -;for("number"==typeof n&&(r=(0>n?st(0,r+n):ot(n,r-1))+1);r--;)if(e[r]===t)return r;return-1},n.map=S,n.max=x,n.memoize=function(e,t){var n={};return function(){var r=t?t.apply(this,arguments):arguments[0];return G.call(n,r)?n[r]:n[r]=e.apply(this,arguments)}},n.min=function(e,t,n){var r=Infinity,i=-1,o=e?e.length:0,u=r;if(t||!Nt(e))t=s(t,n),kt(e,function(e,n,i){n=t(e,n,i),nO(t,r,1)&&(n[r]=e)}),n},n.once=function(e){var t,n=!1;return function(){return n?t:(n=!0,t=e.apply(this,arguments),e=null,t)}},n.pairs=function(e){var t=[];return wt(e,function(e,n){t.push([n,e])}),t},n.pick=function(e){for(var t=0,n=K.apply(I,arguments),r=n.length,i={};++t=f?(clearTimeout(o),u=a,i=e.apply(s,r)):o||(o=setTimeout(n,f)),i}},n.times=function(e,t,n){for(var e=+e||0,r=-1,i=Array(e);++rO(arguments,i,1)&&r.push(i)}return r},n.wrap=function(e,t){return function(){var n=[e];return Y.apply(n,arguments),t.apply(this,n)}},n.zip=function(e){for(var t=-1,n=e?x(T(arguments,"length")):0,r=Array(n);++tn||e===t)return 1;if(er&&(r=n,u=e)});else for(;++iu&&(u=e[i]);return u}function N(e,t){var n=[];return kt(e,function(e){n.push(e[t])}),n}function C(e,t,n,r){var i=3>arguments.length,t=s(t,r);return kt(e,function(e,r,s){n=i?(i=!1,e):t(n,e,r,s)}),n}function k(e,t,n,r){var i=e?e.length:0,s=3>arguments +.length;if("number"!=typeof i)var o=Ct(e),i=o.length;return kt(e,function(u,a,f){a=o?o[--i]:--i,n=s?(s=!1,e[a]):t.call(r,n,e[a],a,f)}),n}function L(e,t,n){var r,t=s(t,n);if(Nt(e))for(var n=-1,i=e.length;++nn?ot(0,i+n):n||0)-1;else if(n)return r=D(e,t),e[r]===t?r:-1;for(;++r>>1,n(e[r])M(a,f))n&&a.push(f),u.push(r)}return u}function H(e,t){return gt|| +nt&&2"']/g,J=/['\n\r\t\u2028\u2029\\]/g,K=Math.ceil,Q=q.concat,G=Math.floor,Y=I.hasOwnProperty,Z=q.push,et=q.slice,tt=I.toString,nt=X.test(nt=et.bind)&&nt,rt=X.test(rt=Array.isArray)&&rt,it=e.isFinite,st=X.test(st=Object.keys)&&st,ot=Math.max,ut=Math.min,at=Math.random,ft="[object Array]",lt="[object Boolean]",ct="[object Date]",ht="[object Number]",pt="[object Object]",dt="[object RegExp]",vt="[object String]",mt=(mt={0:1,length:1},q. +splice.call(mt,0,1),mt[0]),gt=nt&&/\n|Opera/.test(nt+tt.call(e.opera)),yt={"boolean":!1,"function":!0,object:!0,number:!1,string:!1,"undefined":!1},bt={"\\":"\\","'":"'","\n":"n","\r":"r"," ":"t","\u2028":"u2028","\u2029":"u2029"};n.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""},n.isArguments=function(e){return"[object Arguments]"==tt.call(e)},n.isArguments(arguments)||(n.isArguments=function(e){return e?Y.call(e,"callee"):!1});var wt= +function(e,t){var n,r;if(!e)return e;t=s(t);for(n in e)if(r=e[n],t(r,n,e)===U)break;return e},Et=function(e,t){var n,r;if(!e)return e;t=s(t);for(n in e)if(Y.call(e,n)&&(r=e[n],t(r,n,e)===U))break;return e},St={"&":"&","<":"<",">":">",'"':""","'":"'"},xt=p(St),Tt=function(e,t,n){var r,i,s=e;if(!e)return e;for(var o=1,u="number"==typeof n?2:arguments.length;oe?t():function(){if(1>--e)return t.apply(this,arguments)}},n.bind=H,n.bindAll=function(e){for(var t=arguments,n=1M(r,s,n)&&i.push(s)}return i},n.escape=function(e){return null==e?"":(e+"").replace($,u)},n.every=w,n.extend=c,n.filter=E,n.find=S,n.first=A,n.flatten=O,n.forEach=kt,n.functions=h,n.groupBy=function(e,t,n){var r={},t=s(t,n);return kt(e,function(e,n,i){n=t(e,n,i),(Y.call(r,n)?r[n]:r[n]=[]).push(e)}),r},n.has=function(e,t){return e?Y.call(e,t):!1},n.identity=B,n.indexOf=M,n.initial=function(e,t,n){return e?et.call(e,0,-(null==t||n?1:t)):[]},n.intersection=function(e){var t=arguments,n=t.length +,r=[];return kt(e,function(e){if(0>M(r,e)){for(var i=n;--i;)if(0>M(t[i],e))return;r.push(e)}}),r},n.invert=p,n.invoke=function(e,t){var n=et.call(arguments,2),r="function"==typeof t,i=[];return kt(e,function(e){i.push((r?t:e[t]).apply(e,n))}),i},n.isArray=Nt,n.isBoolean=function(e){return!0===e||!1===e||tt.call(e)==lt},n.isDate=function(e){return tt.call(e)==ct},n.isElement=function(e){return e?1===e.nodeType:!1},n.isEmpty=function(e){if(!e)return!0;if(Nt(e)||g(e))return!e.length;for(var t in e)if( +Y.call(e,t))return!1;return!0},n.isEqual=d,n.isFinite=function(e){return it(e)&&tt.call(e)==ht},n.isFunction=v,n.isNaN=function(e){return tt.call(e)==ht&&e!=+e},n.isNull=function(e){return null===e},n.isNumber=function(e){return tt.call(e)==ht},n.isObject=m,n.isRegExp=function(e){return tt.call(e)==dt},n.isString=g,n.isUndefined=function(e){return e===t},n.keys=Ct,n.last=function(e,t,n){if(e){var r=e.length;return null==t||n?e[r-1]:et.call(e,-t||r)}},n.lastIndexOf=function(e,t,n){var r=e?e.length +:0;for("number"==typeof n&&(r=(0>n?ot(0,r+n):ut(n,r-1))+1);r--;)if(e[r]===t)return r;return-1},n.map=x,n.max=T,n.memoize=function(e,t){var n={};return function(){var r=t?t.apply(this,arguments):arguments[0];return Y.call(n,r)?n[r]:n[r]=e.apply(this,arguments)}},n.min=function(e,t,n){var r=Infinity,i=-1,o=e?e.length:0,u=r;if(t||!Nt(e))t=s(t,n),kt(e,function(e,n,i){n=t(e,n,i),nM(t,r,1)&&(n[r]=e)}),n},n.once=function(e){var t,n=!1;return function(){return n?t:(n=!0,t=e.apply(this,arguments),e=null,t)}},n.pairs=function(e){var t=[];return Et(e,function(e,n){t.push([n,e])}),t},n.pick=function(e){for(var t=0,n=Q.apply(q,arguments),r=n.length,i={};++t=f?(clearTimeout(o),u=a,i=e.apply(s,r)):o||(o=setTimeout(n,f)),i}},n.times=function(e,t,n){for(var e=+e||0,r=-1,i=Array(e);++rM(arguments,i,1)&&r.push(i)}return r},n.wrap=function(e,t){return function(){var n=[e];return Z.apply(n,arguments),t.apply(this,n)}},n.zip=function(e){for(var t=-1,n=e?T(N(arguments,"length")):0,r=Array(n);++t -1; + } else { + methodNames = underscoreMethods.slice(); + } } // add method names explicitly by category if (/category/.test(command)) { @@ -1043,6 +1054,9 @@ // remove nonexistent and duplicate method names methodNames = _.uniq(_.intersection(allMethods, expandMethodNames(methodNames))); + if (!exposeAssign) { + methodNames = _.without(methodNames, 'assign'); + } var lodash = context._ || {}; methodNames.forEach(function(methodName) { testMethod(lodash, methodName, basename); diff --git a/test/test.js b/test/test.js index fad3b7caf..e148ad02d 100644 --- a/test/test.js +++ b/test/test.js @@ -409,6 +409,14 @@ Foo.prototype = { 'c': 3 }; deepEqual(_.extend({}, Foo), expected); }); + + test('should work with `_.reduce`', function() { + var actual = { 'a': 1}, + array = [{ 'b': 2 }, { 'c': 3 }]; + + _.reduce(array, _.extend, actual); + deepEqual(actual, { 'a': 1, 'b': 2, 'c': 3}); + }); }()); /*--------------------------------------------------------------------------*/