From ff0f05a1c1bab53352d9554ec9ac8086d3b7aa67 Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Sat, 13 Jul 2013 10:35:05 -0700 Subject: [PATCH] Ensure more Arrays methods accept `arguments` objects and allow falsey arguments. Former-commit-id: 06dfbb25236c6daf3efc6b0c1d06d00cf17180b8 --- build.js | 50 +++++++++++--------- dist/lodash.compat.js | 43 +++++++++--------- dist/lodash.compat.min.js | 86 +++++++++++++++++------------------ dist/lodash.js | 43 +++++++++--------- dist/lodash.min.js | 78 +++++++++++++++---------------- dist/lodash.underscore.js | 37 ++++++++------- dist/lodash.underscore.min.js | 60 ++++++++++++------------ lodash.js | 43 +++++++++--------- 8 files changed, 222 insertions(+), 218 deletions(-) diff --git a/build.js b/build.js index 2a4922f7e..0b6661179 100644 --- a/build.js +++ b/build.js @@ -87,9 +87,9 @@ // public functions 'after': [], 'assign': ['createCallback', 'createIterator'], - 'at': ['isString'], + 'at': ['basicFlatten', 'isString'], 'bind': ['createBound'], - 'bindAll': ['bind', 'functions'], + 'bindAll': ['basicFlatten', 'bind', 'functions'], 'bindKey': ['createBound'], 'clone': ['assign', 'createCallback', 'forEach', 'forOwn', 'getArray', 'isArray', 'isObject', 'isNode', 'releaseArray', 'slice'], 'cloneDeep': ['clone'], @@ -102,7 +102,7 @@ 'defaults': ['createCallback', 'createIterator'], 'defer': ['bind'], 'delay': [], - 'difference': ['cacheIndexOf', 'createCache', 'getIndexOf', 'releaseObject'], + 'difference': ['basicFlatten', 'cacheIndexOf', 'createCache', 'getIndexOf', 'releaseObject'], 'escape': ['escapeHtmlChar', 'keys'], 'every': ['basicEach', 'createCallback', 'isArray'], 'filter': ['basicEach', 'createCallback', 'isArray'], @@ -150,13 +150,13 @@ 'min': ['basicEach', 'charAtCallback', 'createCallback', 'isArray', 'isString'], 'mixin': ['forEach', 'functions'], 'noConflict': [], - 'omit': ['createCallback', 'forIn', 'getIndexOf'], + 'omit': ['basicFlatten', 'createCallback', 'forIn', 'getIndexOf'], 'once': [], 'pairs': ['keys'], 'parseInt': ['isString'], 'partial': ['createBound'], 'partialRight': ['createBound'], - 'pick': ['createCallback', 'forIn', 'isObject'], + 'pick': ['basicFlatten', 'createCallback', 'forIn', 'isObject'], 'pluck': ['map'], 'random': [], 'range': [], @@ -178,7 +178,7 @@ 'toArray': ['isString', 'slice', 'values'], 'transform': ['createCallback', 'createObject', 'forOwn', 'isArray'], 'unescape': ['keys', 'unescapeHtmlChar'], - 'union': ['basicFlatten', 'basicUniq'], + 'union': ['basicFlatten', 'basicUniq', 'compact'], 'uniq': ['basicUniq', 'overloadWrapper'], 'uniqueId': [], 'value': ['basicEach', 'forOwn', 'isArray', 'lodash', 'mixin', 'wrapperValueOf', 'lodashWrapper'], @@ -2664,7 +2664,7 @@ if (_.contains(deps, 'lodash') || _.contains(deps, 'lodashWrapper')) { funcDependencyMap[funcName] = _.without(deps, 'lodash', 'lodashWrapper'); } - }) + }); } if (isUnderscore) { if (!isLodash('clone') && !isLodash('cloneDeep')) { @@ -2707,7 +2707,11 @@ if (!isLodash(funcName)) { var basicFuncName = 'basic' + capitalize(funcName); - (funcDependencyMap.union = _.without(funcDependencyMap.union, basicFuncName)).push(funcName); + _.forOwn(funcDependencyMap, function(deps, otherName) { + if (_.contains(deps, basicFuncName)) { + (funcDependencyMap[otherName] = _.without(deps, basicFuncName)).push(funcName); + } + }); funcDependencyMap[funcName] = _.without( funcDependencyMap[funcName].concat(funcDependencyMap[basicFuncName], funcDependencyMap.overloadWrapper), @@ -3149,7 +3153,7 @@ ' var index = -1,', ' indexOf = getIndexOf(),', ' length = array.length,', - ' flattened = concat.apply(arrayRef, nativeSlice.call(arguments, 1)),', + ' flattened = flatten(nativeSlice.call(arguments, 1)),', ' result = [];', '', ' while (++index < length) {', @@ -3391,7 +3395,7 @@ source = replaceFunction(source, 'omit', [ 'function omit(object) {', ' var indexOf = getIndexOf(),', - ' props = concat.apply(arrayRef, nativeSlice.call(arguments, 1)),', + ' props = flatten(nativeSlice.call(arguments, 1)),', ' result = {};', '', ' forIn(object, function(value, key) {', @@ -3408,7 +3412,7 @@ source = replaceFunction(source, 'pick', [ 'function pick(object) {', ' var index = -1,', - ' props = concat.apply(arrayRef, nativeSlice.call(arguments, 1)),', + ' props = flatten(nativeSlice.call(arguments, 1)),', ' length = props.length,', ' result = {};', '', @@ -3652,16 +3656,6 @@ }); } - // replace `basicFlatten` and `basicUniq` with `flatten` and `uniq` in `_.union` - _.each(['flatten', 'uniq'], function(funcName) { - if (!isLodash(funcName)) { - source = source.replace(matchFunction(source, 'union'), function(match) { - var basicFuncName = 'basic' + capitalize(funcName); - return match.replace(RegExp('\\b' + basicFuncName + '\\b', 'g'), funcName); - }); - } - }); - // replace `slice` with `nativeSlice.call` _.each(['clone', 'first', 'initial', 'last', 'rest', 'toArray'], function(funcName) { if (funcName == 'clone' @@ -3674,6 +3668,20 @@ } }); + // replace `basicFlatten` with `flatten` and `basicUniq` with `uniq` + _.each(['flatten', 'uniq'], function(funcName) { + if (!isLodash(funcName)) { + var basicFuncName = 'basic' + capitalize(funcName); + _.forOwn(funcDependencyMap, function(deps, otherName) { + if (_.contains(deps, funcName)) { + source = source.replace(matchFunction(source, otherName), function(match) { + return match.replace(RegExp('\\b' + basicFuncName + '\\b', 'g'), funcName); + }); + } + }); + } + }); + // remove conditional `charCodeCallback` use from `_.max` and `_.min` _.each(['max', 'min'], function(funcName) { if (!isLodash(funcName)) { diff --git a/dist/lodash.compat.js b/dist/lodash.compat.js index d3016c079..5bf4849d7 100644 --- a/dist/lodash.compat.js +++ b/dist/lodash.compat.js @@ -488,7 +488,6 @@ /** Native method shortcuts */ var ceil = Math.ceil, clearTimeout = context.clearTimeout, - concat = arrayRef.concat, floor = Math.floor, fnToString = Function.prototype.toString, getPrototypeOf = reNative.test(getPrototypeOf = Object.getPrototypeOf) && getPrototypeOf, @@ -2498,7 +2497,7 @@ if (isFunc) { callback = lodash.createCallback(callback, thisArg); } else { - var props = concat.apply(arrayRef, nativeSlice.call(arguments, 1)); + var props = basicFlatten(nativeSlice.call(arguments, 1)); } forIn(object, function(value, key, object) { if (isFunc @@ -2549,8 +2548,9 @@ * @memberOf _ * @category Objects * @param {Object} object The source object. - * @param {Array|Function|String} callback|[prop1, prop2, ...] The function called - * per iteration or properties to pick, either as individual arguments or arrays. + * @param {Array|Function|String} callback|[prop1, prop2, ...] The function + * called per iteration or property names to pick, specified as individual + * property names or arrays of property names. * @param {Mixed} [thisArg] The `this` binding of `callback`. * @returns {Object} Returns an object composed of the picked properties. * @example @@ -2567,7 +2567,7 @@ var result = {}; if (typeof callback != 'function') { var index = -1, - props = concat.apply(arrayRef, nativeSlice.call(arguments, 1)), + props = basicFlatten(nativeSlice.call(arguments, 1)), length = isObject(object) ? props.length : 0; while (++index < length) { @@ -2674,8 +2674,8 @@ * @memberOf _ * @category Collections * @param {Array|Object|String} collection The collection to iterate over. - * @param {Array|Number|String} [index1, index2, ...] The indexes of - * `collection` to retrieve, either as individual arguments or arrays. + * @param {Array|Number|String} [index1, index2, ...] The indexes of `collection` + * to retrieve, specified as individual indexes or arrays of indexes. * @returns {Array} Returns a new array of elements corresponding to the * provided indexes. * @example @@ -2688,7 +2688,7 @@ */ function at(collection) { var index = -1, - props = concat.apply(arrayRef, nativeSlice.call(arguments, 1)), + props = basicFlatten(nativeSlice.call(arguments, 1)), length = props.length, result = Array(length); @@ -3714,16 +3714,17 @@ } /** - * Creates an array of `array` elements not present in the other arrays - * using strict equality for comparisons, i.e. `===`. + * Creates an arrat with all occurrences of the passed values removed using + * using strict equality for comparisons, i.e. `===`. Values to exclude may + * be specified as individual arguments or as arrays. * * @static * @memberOf _ * @category Arrays * @param {Array} array The array to process. - * @param {Array} [array1, array2, ...] Arrays to check. - * @returns {Array} Returns a new array of `array` elements not present in the - * other arrays. + * @param {Array} [array1, array2, ...] The values to exclude, specified as + * individual values or arrays of values. + * @returns {Array} Returns a new filtered array. * @example * * _.difference([1, 2, 3, 4, 5], [5, 2, 10]); @@ -3733,7 +3734,7 @@ var index = -1, indexOf = getIndexOf(), length = array ? array.length : 0, - seen = concat.apply(arrayRef, nativeSlice.call(arguments, 1)), + seen = basicFlatten(nativeSlice.call(arguments, 1)), result = []; var isLarge = length >= largeArraySize && indexOf === basicIndexOf; @@ -4398,10 +4399,7 @@ * // => [1, 2, 3, 101, 10] */ function union(array) { - if (!array) { - arguments[0] = arrayRef; - } - return basicUniq(basicFlatten(arguments, true)); + return basicUniq(basicFlatten(compact(arguments), true)); } /** @@ -4450,14 +4448,14 @@ var uniq = overloadWrapper(basicUniq); /** - * Creates an array with all occurrences of the passed values removed using + * Creates an array excluding all occurrences of the passed values using * strict equality for comparisons, i.e. `===`. * * @static * @memberOf _ * @category Arrays * @param {Array} array The array to filter. - * @param {Mixed} [value1, value2, ...] Values to remove. + * @param {Mixed} [value1, value2, ...] Values to exclude. * @returns {Array} Returns a new filtered array. * @example * @@ -4599,7 +4597,8 @@ * @memberOf _ * @category Functions * @param {Object} object The object to bind and assign the bound methods to. - * @param {String} [methodName1, methodName2, ...] Method names on the object to bind. + * @param {String} [methodName1, methodName2, ...] The object method names to + * bind, specified as individual values or arrays of values. * @returns {Object} Returns `object`. * @example * @@ -4613,7 +4612,7 @@ * // => alerts 'clicked docs', when the button is clicked */ function bindAll(object) { - var funcs = arguments.length > 1 ? concat.apply(arrayRef, nativeSlice.call(arguments, 1)) : functions(object), + var funcs = arguments.length > 1 ? basicFlatten(nativeSlice.call(arguments, 1)) : functions(object), index = -1, length = funcs.length; diff --git a/dist/lodash.compat.min.js b/dist/lodash.compat.min.js index a30e64928..adc01aed1 100644 --- a/dist/lodash.compat.min.js +++ b/dist/lodash.compat.min.js @@ -3,48 +3,48 @@ * Lo-Dash 1.3.1 (Custom Build) lodash.com/license | Underscore.js 1.5.1 underscorejs.org/LICENSE * Build: `lodash -o ./dist/lodash.compat.js` */ -;!function(n){function t(n,t,r){r=(r||0)-1;for(var e=n.length;++rt||typeof n=="undefined")return 1;if(nr?0:r);++e=E&&i===t,v=u||p?l():f;if(p){var h=o(v);h?(i=r,v=h):(p=b,v=u?v:(s(v),f))}for(;++ai(v,y))&&((u||p)&&v.push(y),f.push(h))}return p?(s(v.b),g(v)):u&&s(v),f}function tt(n,t,r,e){function u(){var e=arguments,c=o?this:t;return a||(n=t[i]),r.length&&(e=e.length?(e=Ar.call(e),l?e.concat(r):r.concat(e)):r),this instanceof u?(c=at(n.prototype),e=n.apply(c,e),mt(e)?e:c):n.apply(c,e) -}var a=yt(n),o=!r,i=t;if(o){var l=e;r=t}else if(!a){if(!e)throw new nr;t=n}return u}function et(){var n=c(),t=x.o;n.g=W,n.b=n.c=n.f=n.h="",n.e="r",n.i=m,n.j=!!t;for(var r,e=0;r=arguments[e];e++)for(var u in r)n[u]=r[u];e=n.a,n.d=/^[^,]+/.exec(e)[0],r=Ut,e="return function("+e+"){",u="var m,r="+n.d+",C="+n.e+";if(!r)return C;"+n.h+";",n.b?(u+="var s=r.length;m=-1;if("+n.b+"){",zr.unindexedChars&&(u+="if(q(r)){r=r.split('')}"),u+="while(++mt||typeof n=="undefined")return 1;if(nr?0:r);++e=E&&i===t,v=u||p?f():l;if(p){var h=o(v);h?(i=r,v=h):(p=b,v=u?v:(s(v),l))}for(;++ai(v,m))&&((u||p)&&v.push(m),l.push(h))}return p?(s(v.b),g(v)):u&&s(v),l}function tt(n,t,r,e){function u(){var e=arguments,c=o?this:t;return a||(n=t[i]),r.length&&(e=e.length?(e=Ar.call(e),f?e.concat(r):r.concat(e)):r),this instanceof u?(c=at(n.prototype),e=n.apply(c,e),yt(e)?e:c):n.apply(c,e) +}var a=mt(n),o=!r,i=t;if(o){var f=e;r=t}else if(!a){if(!e)throw new tr;t=n}return u}function et(){var n=c(),t=x.o;n.g=W,n.b=n.c=n.f=n.h="",n.e="r",n.i=y,n.j=!!t;for(var r,e=0;r=arguments[e];e++)for(var u in r)n[u]=r[u];e=n.a,n.d=/^[^,]+/.exec(e)[0],r=Vt,e="return function("+e+"){",u="var m,r="+n.d+",C="+n.e+";if(!r)return C;"+n.h+";",n.b?(u+="var s=r.length;m=-1;if("+n.b+"){",zr.unindexedChars&&(u+="if(q(r)){r=r.split('')}"),u+="while(++mk;k++)u+="m='"+n.g[k]+"';if((!(p&&v[m])&&l.call(r,m))",n.i||(u+="||(!v[m]&&r[m]!==y[m])"),u+="){"+n.f+"}"; -u+="}"}return(n.b||zr.nonEnumArgs)&&(u+="}"),u+=n.c+";return C",r=r("i,j,l,indicatorObject,n,o,q,t,u,y,z,w,G,H,J",e+u+"}"),g(n),r(K,rr,gr,w,pt,Rr,bt,t,_,er,Z,Pr,X,ur,dr)}function at(n){return mt(n)?_r(n):{}}function ot(n){return Lr[n]}function it(){var n=(n=_.indexOf)===zt?t:n;return n}function lt(n){return function(t,r,e,u){return typeof r!="boolean"&&r!=d&&(u=e,e=u&&u[r]===t?y:r,r=b),e!=d&&(e=_.createCallback(e,u)),n(t,r,e,u)}}function ct(n){var t,r;return!n||dr.call(n)!=V||(t=n.constructor,yt(t)&&!(t instanceof t))||!zr.argsClass&&pt(n)||!zr.nodeClass&&f(n)?b:zr.ownLast?(Ur(n,function(n,t,e){return r=gr.call(e,t),b -}),r!==false):(Ur(n,function(n,t){r=t}),r===y||gr.call(n,r))}function ft(n){return Gr[n]}function pt(n){return n&&typeof n=="object"?dr.call(n)==L:b}function st(n,t,r,e,u,a){var o=n;if(typeof t!="boolean"&&t!=d&&(e=r,r=t,t=b),typeof r=="function"){if(r=typeof e=="undefined"?r:_.createCallback(r,e,1),o=r(o),typeof o!="undefined")return o;o=n}if(e=mt(o)){var i=dr.call(o);if(!Y[i]||!zr.nodeClass&&f(o))return o;var c=Rr(o)}if(!e||!t)return e?c?v(o):Kr({},o):o;switch(e=Nr[i],i){case H:case J:return new e(+o); -case U:case X:return new e(o);case Q:return e(o.source,z.exec(o))}i=!u,u||(u=l()),a||(a=l());for(var p=u.length;p--;)if(u[p]==n)return a[p];return o=c?e(o.length):{},c&&(gr.call(n,"index")&&(o.index=n.index),gr.call(n,"input")&&(o.input=n.input)),u.push(n),a.push(o),(c?Wr:Vr)(n,function(n,e){o[e]=st(n,t,r,y,u,a)}),i&&(s(u),s(a)),o}function gt(n){var t=[];return Ur(n,function(n,r){yt(n)&&t.push(r)}),t.sort()}function vt(n){for(var t=-1,r=Tr(n),e=r.length,u={};++tr?xr(0,a+r):r)||0,a&&typeof a=="number"?o=-1<(bt(n)?n.indexOf(t,r):u(n,t,r)):Wr(n,function(n){return++ea&&(a=i)}}else t=!t&&bt(n)?u:_.createCallback(t,r),Wr(n,function(n,r,u){r=t(n,r,u),r>e&&(e=r,a=n)});return a}function At(n,t,r,e){var u=3>arguments.length;if(t=_.createCallback(t,e,4),Rr(n)){var a=-1,o=n.length;for(u&&(r=n[++a]);++aarguments.length;if(typeof a!="number")var i=Tr(n),a=i.length;else zr.unindexedChars&&bt(n)&&(u=n.split(""));return t=_.createCallback(t,e,4),Ot(n,function(n,e,l){e=i?i[--a]:--a,r=o?(o=b,u[e]):t(r,u[e],e,l) -}),r}function Bt(n,t,r){var e;if(t=_.createCallback(t,r),Rr(n)){r=-1;for(var u=n.length;++r=E&&u===t;if(c){var f=o(i);f?(u=r,i=f):c=b}for(;++eu(i,f)&&l.push(f);return c&&g(i),l}function Pt(n,t,r){if(n){var e=0,u=n.length;if(typeof t!="number"&&t!=d){var a=-1;for(t=_.createCallback(t,r);++ae?xr(0,u+e):e||0}else if(e)return e=$t(n,r),n[e]===r?e:-1;return n?t(n,r,e):-1}function Ft(n,t,r){if(typeof t!="number"&&t!=d){var e=0,u=-1,a=n?n.length:0;for(t=_.createCallback(t,r);++u>>1,r(n[e])r?0:r);++tc&&(i=n.apply(l,o));else{var r=new Mt;!s&&!h&&(f=r);var e=p-(r-f);0/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:F,variable:"",imports:{_:_}};var Fr={a:"x,F,k",h:"var a=arguments,b=0,c=typeof k=='number'?2:a.length;while(++b":">",'"':""","'":"'"},Gr=vt(Lr),Hr=Yt("("+Tr(Gr).join("|")+")","g"),Jr=Yt("["+Tr(Lr).join("")+"]","g"),Kr=et(Fr,{h:Fr.h.replace(";",";if(c>3&&typeof a[c-2]=='function'){var d=u.createCallback(a[--c-1],a[c--],2)}else if(c>2&&typeof a[c-1]=='function'){d=a[--c]}"),f:"C[m]=d?d(C[m],r[m]):r[m]"}),Mr=et(Fr),Ur=et($r,Dr,{i:b}),Vr=et($r,Dr); -yt(/x/)&&(yt=function(n){return typeof n=="function"&&dr.call(n)==M});var Qr=sr?function(n){if(!n||dr.call(n)!=V||!zr.argsClass&&pt(n))return b;var t=n.valueOf,r=typeof t=="function"&&(r=sr(t))&&sr(r);return r?n==r||sr(n)==r:ct(n)}:ct,Xr=Et,Yr=lt(S),Zr=lt(nt);Br&&rt&&typeof yr=="function"&&(Wt=qt(yr,e));var ne=8==Er(A+"08")?Er:function(n,t){return Er(bt(n)?n.replace($,""):n,t||0)};return _.after=function(n,t){return function(){return 1>--n?t.apply(this,arguments):void 0}},_.assign=Kr,_.at=function(n){var t=-1,r=cr.apply(tr,Ar.call(arguments,1)),e=r.length,u=Jt(e); -for(zr.unindexedChars&&bt(n)&&(n=n.split(""));++t=E&&o(a?e[a]:h)}n:for(;++c(m?r(m,y):f(h,y))){for(a=u,(m||h).push(y);--a;)if(m=i[a],0>(m?r(m,y):f(e[a],y)))continue n;v.push(y)}}for(;u--;)(m=i[u])&&g(m);return s(i),s(h),v},_.invert=vt,_.invoke=function(n,t){var r=Ar.call(arguments,2),e=-1,u=typeof t=="function",a=n?n.length:0,o=Jt(typeof a=="number"?a:0); -return Ot(n,function(n){o[++e]=(u?t:n[t]).apply(n,r)}),o},_.keys=Tr,_.map=Et,_.max=St,_.memoize=function(n,t){function r(){var e=r.cache,u=O+(t?t.apply(this,arguments):arguments[0]);return gr.call(e,u)?e[u]:e[u]=n.apply(this,arguments)}return r.cache={},r},_.merge=_t,_.min=function(n,t,r){var e=1/0,a=e;if(!t&&Rr(n)){r=-1;for(var o=n.length;++re(o,r))&&(a[r]=n)}),a},_.once=function(n){var t,r;return function(){return t?r:(t=m,r=n.apply(this,arguments),n=d,r)}},_.pairs=function(n){for(var t=-1,r=Tr(n),e=r.length,u=Jt(e);++tr?xr(0,e+r):Or(r,e-1))+1);e--;)if(n[e]===t)return e;return-1},_.mixin=Gt,_.noConflict=function(){return e._=ar,this},_.parseInt=ne,_.random=function(n,t){n==d&&t==d&&(t=1),n=+n||0,t==d?(t=n,n=0):t=+t||0;var r=Sr();return n%1||t%1?n+Or(r*(t-n+parseFloat("1e-"+((r+"").length-1))),t):n+fr(r*(t-n+1))},_.reduce=At,_.reduceRight=It,_.result=function(n,t){var r=n?n[t]:y; -return yt(r)?n[t]():r},_.runInContext=h,_.size=function(n){var t=n?n.length:0;return typeof t=="number"?t:Tr(n).length},_.some=Bt,_.sortedIndex=$t,_.template=function(n,t,r){var e=_.templateSettings;n||(n=""),r=Mr({},r,e);var u,a=Mr({},r.imports,e.imports),e=Tr(a),a=jt(a),o=0,l=r.interpolate||D,c="__p+='",l=Yt((r.escape||D).source+"|"+l.source+"|"+(l===F?P:D).source+"|"+(r.evaluate||D).source+"|$","g");n.replace(l,function(t,r,e,a,l,f){return e||(e=a),c+=n.slice(o,f).replace(q,i),r&&(c+="'+__e("+r+")+'"),l&&(u=m,c+="';"+l+";__p+='"),e&&(c+="'+((__t=("+e+"))==null?'':__t)+'"),o=f+t.length,t -}),c+="';\n",l=r=r.variable,l||(r="obj",c="with("+r+"){"+c+"}"),c=(u?c.replace(I,""):c).replace(B,"$1").replace(N,"$1;"),c="function("+r+"){"+(l?"":r+"||("+r+"={});")+"var __t,__p='',__e=_.escape"+(u?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+c+"return __p}";try{var f=Ut(e,"return "+c).apply(y,a)}catch(p){throw p.source=c,p}return t?f(t):(f.source=c,f)},_.unescape=function(n){return n==d?"":Zt(n).replace(Hr,ft)},_.uniqueId=function(n){var t=++C;return Zt(n==d?"":n)+t -},_.all=wt,_.any=Bt,_.detect=xt,_.findWhere=xt,_.foldl=At,_.foldr=It,_.include=Ct,_.inject=At,Vr(_,function(n,t){_.prototype[t]||(_.prototype[t]=function(){var t=[this.__wrapped__];return vr.apply(t,arguments),n.apply(_,t)})}),_.first=Pt,_.last=function(n,t,r){if(n){var e=0,u=n.length;if(typeof t!="number"&&t!=d){var a=u;for(t=_.createCallback(t,r);a--&&t(n[a],a,n);)e++}else if(e=t,e==d||r)return n[u-1];return v(n,xr(0,u-e))}},_.take=Pt,_.head=Pt,Vr(_,function(n,t){_.prototype[t]||(_.prototype[t]=function(t,r){var e=n(this.__wrapped__,t,r); -return t==d||r&&typeof t!="function"?e:new j(e)})}),_.VERSION="1.3.1",_.prototype.toString=function(){return Zt(this.__wrapped__)},_.prototype.value=Ht,_.prototype.valueOf=Ht,Wr(["join","pop","shift"],function(n){var t=tr[n];_.prototype[n]=function(){return t.apply(this.__wrapped__,arguments)}}),Wr(["push","reverse","sort","unshift"],function(n){var t=tr[n];_.prototype[n]=function(){return t.apply(this.__wrapped__,arguments),this}}),Wr(["concat","slice","splice"],function(n){var t=tr[n];_.prototype[n]=function(){return new j(t.apply(this.__wrapped__,arguments)) -}}),zr.spliceObjects||Wr(["pop","shift","splice"],function(n){var t=tr[n],r="splice"==n;_.prototype[n]=function(){var n=this.__wrapped__,e=t.apply(n,arguments);return 0===n.length&&delete n[0],r?new j(e):e}}),_}var y,m=!0,d=null,b=!1,_=[],j=[],C=0,w={},x={},O=+new Date+"",E=75,S=40,A=" \t\x0B\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000",I=/\b__p\+='';/g,B=/\b(__p\+=)''\+/g,N=/(__e\(.*?\)|\b__t\))\+'';/g,P=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,z=/\w*$/,F=/<%=([\s\S]+?)%>/g,$=RegExp("^["+A+"]*0+(?=.$)"),D=/($^)/,R=(R=/\bthis\b/)&&R.test(h)&&R,q=/['\n\r\t\u2028\u2029\\]/g,T="Array Boolean Date Error Function Math Number Object RegExp String _ attachEvent clearTimeout isFinite isNaN parseInt setImmediate setTimeout".split(" "),W="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),L="[object Arguments]",G="[object Array]",H="[object Boolean]",J="[object Date]",K="[object Error]",M="[object Function]",U="[object Number]",V="[object Object]",Q="[object RegExp]",X="[object String]",Y={}; -Y[M]=b,Y[L]=Y[G]=Y[H]=Y[J]=Y[U]=Y[V]=Y[Q]=Y[X]=m;var Z={"boolean":b,"function":m,object:m,number:b,string:b,undefined:b},nt={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},tt=Z[typeof exports]&&exports,rt=Z[typeof module]&&module&&module.exports==tt&&module,et=Z[typeof global]&&global;!et||et.global!==et&&et.window!==et||(n=et);var ut=h();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(n._=ut, define(function(){return ut})):tt&&!tt.nodeType?rt?(rt.exports=ut)._=ut:tt._=ut:n._=ut +u+="}"}return(n.b||zr.nonEnumArgs)&&(u+="}"),u+=n.c+";return C",r=r("i,j,l,indicatorObject,n,o,q,t,u,y,z,w,G,H,J",e+u+"}"),g(n),r(K,er,gr,w,pt,Rr,bt,t,_,ur,Z,Pr,X,ar,dr)}function at(n){return yt(n)?_r(n):{}}function ot(n){return Lr[n]}function it(){var n=(n=_.indexOf)===Ft?t:n;return n}function ft(n){return function(t,r,e,u){return typeof r!="boolean"&&r!=d&&(u=e,e=u&&u[r]===t?m:r,r=b),e!=d&&(e=_.createCallback(e,u)),n(t,r,e,u)}}function ct(n){var t,r;return!n||dr.call(n)!=V||(t=n.constructor,mt(t)&&!(t instanceof t))||!zr.argsClass&&pt(n)||!zr.nodeClass&&l(n)?b:zr.ownLast?(Ur(n,function(n,t,e){return r=gr.call(e,t),b +}),r!==false):(Ur(n,function(n,t){r=t}),r===m||gr.call(n,r))}function lt(n){return Gr[n]}function pt(n){return n&&typeof n=="object"?dr.call(n)==L:b}function st(n,t,r,e,u,a){var o=n;if(typeof t!="boolean"&&t!=d&&(e=r,r=t,t=b),typeof r=="function"){if(r=typeof e=="undefined"?r:_.createCallback(r,e,1),o=r(o),typeof o!="undefined")return o;o=n}if(e=yt(o)){var i=dr.call(o);if(!Y[i]||!zr.nodeClass&&l(o))return o;var c=Rr(o)}if(!e||!t)return e?c?v(o):Kr({},o):o;switch(e=Nr[i],i){case H:case J:return new e(+o); +case U:case X:return new e(o);case Q:return e(o.source,z.exec(o))}i=!u,u||(u=f()),a||(a=f());for(var p=u.length;p--;)if(u[p]==n)return a[p];return o=c?e(o.length):{},c&&(gr.call(n,"index")&&(o.index=n.index),gr.call(n,"input")&&(o.input=n.input)),u.push(n),a.push(o),(c?Wr:Vr)(n,function(n,e){o[e]=st(n,t,r,m,u,a)}),i&&(s(u),s(a)),o}function gt(n){var t=[];return Ur(n,function(n,r){mt(n)&&t.push(r)}),t.sort()}function vt(n){for(var t=-1,r=Tr(n),e=r.length,u={};++tr?xr(0,a+r):r)||0,a&&typeof a=="number"?o=-1<(bt(n)?n.indexOf(t,r):u(n,t,r)):Wr(n,function(n){return++ea&&(a=i)}}else t=!t&&bt(n)?u:_.createCallback(t,r),Wr(n,function(n,r,u){r=t(n,r,u),r>e&&(e=r,a=n)});return a}function At(n,t,r,e){var u=3>arguments.length;if(t=_.createCallback(t,e,4),Rr(n)){var a=-1,o=n.length;for(u&&(r=n[++a]);++aarguments.length;if(typeof a!="number")var i=Tr(n),a=i.length;else zr.unindexedChars&&bt(n)&&(u=n.split(""));return t=_.createCallback(t,e,4),Ot(n,function(n,e,f){e=i?i[--a]:--a,r=o?(o=b,u[e]):t(r,u[e],e,f) +}),r}function Bt(n,t,r){var e;if(t=_.createCallback(t,r),Rr(n)){r=-1;for(var u=n.length;++r=E&&u===t;if(c){var l=o(i);l?(u=r,i=l):c=b}for(;++eu(i,l)&&f.push(l);return c&&g(i),f}function zt(n,t,r){if(n){var e=0,u=n.length;if(typeof t!="number"&&t!=d){var a=-1; +for(t=_.createCallback(t,r);++ae?xr(0,u+e):e||0}else if(e)return e=Dt(n,r),n[e]===r?e:-1;return n?t(n,r,e):-1}function $t(n,t,r){if(typeof t!="number"&&t!=d){var e=0,u=-1,a=n?n.length:0;for(t=_.createCallback(t,r);++u>>1,r(n[e])r?0:r);++tc&&(i=n.apply(f,o));else{var r=new Ut;!s&&!h&&(l=r);var e=p-(r-l);0/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:F,variable:"",imports:{_:_}};var Fr={a:"x,F,k",h:"var a=arguments,b=0,c=typeof k=='number'?2:a.length;while(++b":">",'"':""","'":"'"},Gr=vt(Lr),Hr=Zt("("+Tr(Gr).join("|")+")","g"),Jr=Zt("["+Tr(Lr).join("")+"]","g"),Kr=et(Fr,{h:Fr.h.replace(";",";if(c>3&&typeof a[c-2]=='function'){var d=u.createCallback(a[--c-1],a[c--],2)}else if(c>2&&typeof a[c-1]=='function'){d=a[--c]}"),f:"C[m]=d?d(C[m],r[m]):r[m]"}),Mr=et(Fr),Ur=et($r,Dr,{i:b}),Vr=et($r,Dr); +mt(/x/)&&(mt=function(n){return typeof n=="function"&&dr.call(n)==M});var Qr=sr?function(n){if(!n||dr.call(n)!=V||!zr.argsClass&&pt(n))return b;var t=n.valueOf,r=typeof t=="function"&&(r=sr(t))&&sr(r);return r?n==r||sr(n)==r:ct(n)}:ct,Xr=Et,Yr=ft(S),Zr=ft(nt);Br&&rt&&typeof mr=="function"&&(Lt=Tt(mr,e));var ne=8==Er(A+"08")?Er:function(n,t){return Er(bt(n)?n.replace($,""):n,t||0)};return _.after=function(n,t){return function(){return 1>--n?t.apply(this,arguments):void 0}},_.assign=Kr,_.at=function(n){var t=-1,r=S(Ar.call(arguments,1)),e=r.length,u=Kt(e); +for(zr.unindexedChars&&bt(n)&&(n=n.split(""));++t=E&&o(a?e[a]:h)}n:for(;++c(y?r(y,m):l(h,m))){for(a=u,(y||h).push(m);--a;)if(y=i[a],0>(y?r(y,m):l(e[a],m)))continue n;v.push(m)}}for(;u--;)(y=i[u])&&g(y);return s(i),s(h),v},_.invert=vt,_.invoke=function(n,t){var r=Ar.call(arguments,2),e=-1,u=typeof t=="function",a=n?n.length:0,o=Kt(typeof a=="number"?a:0);return Ot(n,function(n){o[++e]=(u?t:n[t]).apply(n,r)}),o},_.keys=Tr,_.map=Et,_.max=St,_.memoize=function(n,t){function r(){var e=r.cache,u=O+(t?t.apply(this,arguments):arguments[0]); +return gr.call(e,u)?e[u]:e[u]=n.apply(this,arguments)}return r.cache={},r},_.merge=_t,_.min=function(n,t,r){var e=1/0,a=e;if(!t&&Rr(n)){r=-1;for(var o=n.length;++re(o,r))&&(a[r]=n)}),a},_.once=function(n){var t,r; +return function(){return t?r:(t=y,r=n.apply(this,arguments),n=d,r)}},_.pairs=function(n){for(var t=-1,r=Tr(n),e=r.length,u=Kt(e);++tr?xr(0,e+r):Or(r,e-1))+1);e--;)if(n[e]===t)return e;return-1},_.mixin=Ht,_.noConflict=function(){return e._=or,this},_.parseInt=ne,_.random=function(n,t){n==d&&t==d&&(t=1),n=+n||0,t==d?(t=n,n=0):t=+t||0;var r=Sr();return n%1||t%1?n+Or(r*(t-n+parseFloat("1e-"+((r+"").length-1))),t):n+lr(r*(t-n+1))},_.reduce=At,_.reduceRight=It,_.result=function(n,t){var r=n?n[t]:m; +return mt(r)?n[t]():r},_.runInContext=h,_.size=function(n){var t=n?n.length:0;return typeof t=="number"?t:Tr(n).length},_.some=Bt,_.sortedIndex=Dt,_.template=function(n,t,r){var e=_.templateSettings;n||(n=""),r=Mr({},r,e);var u,a=Mr({},r.imports,e.imports),e=Tr(a),a=jt(a),o=0,f=r.interpolate||D,c="__p+='",f=Zt((r.escape||D).source+"|"+f.source+"|"+(f===F?P:D).source+"|"+(r.evaluate||D).source+"|$","g");n.replace(f,function(t,r,e,a,f,l){return e||(e=a),c+=n.slice(o,l).replace(q,i),r&&(c+="'+__e("+r+")+'"),f&&(u=y,c+="';"+f+";__p+='"),e&&(c+="'+((__t=("+e+"))==null?'':__t)+'"),o=l+t.length,t +}),c+="';\n",f=r=r.variable,f||(r="obj",c="with("+r+"){"+c+"}"),c=(u?c.replace(I,""):c).replace(B,"$1").replace(N,"$1;"),c="function("+r+"){"+(f?"":r+"||("+r+"={});")+"var __t,__p='',__e=_.escape"+(u?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+c+"return __p}";try{var l=Vt(e,"return "+c).apply(m,a)}catch(p){throw p.source=c,p}return t?l(t):(l.source=c,l)},_.unescape=function(n){return n==d?"":nr(n).replace(Hr,lt)},_.uniqueId=function(n){var t=++C;return nr(n==d?"":n)+t +},_.all=wt,_.any=Bt,_.detect=xt,_.findWhere=xt,_.foldl=At,_.foldr=It,_.include=Ct,_.inject=At,Vr(_,function(n,t){_.prototype[t]||(_.prototype[t]=function(){var t=[this.__wrapped__];return vr.apply(t,arguments),n.apply(_,t)})}),_.first=zt,_.last=function(n,t,r){if(n){var e=0,u=n.length;if(typeof t!="number"&&t!=d){var a=u;for(t=_.createCallback(t,r);a--&&t(n[a],a,n);)e++}else if(e=t,e==d||r)return n[u-1];return v(n,xr(0,u-e))}},_.take=zt,_.head=zt,Vr(_,function(n,t){_.prototype[t]||(_.prototype[t]=function(t,r){var e=n(this.__wrapped__,t,r); +return t==d||r&&typeof t!="function"?e:new j(e)})}),_.VERSION="1.3.1",_.prototype.toString=function(){return nr(this.__wrapped__)},_.prototype.value=Jt,_.prototype.valueOf=Jt,Wr(["join","pop","shift"],function(n){var t=rr[n];_.prototype[n]=function(){return t.apply(this.__wrapped__,arguments)}}),Wr(["push","reverse","sort","unshift"],function(n){var t=rr[n];_.prototype[n]=function(){return t.apply(this.__wrapped__,arguments),this}}),Wr(["concat","slice","splice"],function(n){var t=rr[n];_.prototype[n]=function(){return new j(t.apply(this.__wrapped__,arguments)) +}}),zr.spliceObjects||Wr(["pop","shift","splice"],function(n){var t=rr[n],r="splice"==n;_.prototype[n]=function(){var n=this.__wrapped__,e=t.apply(n,arguments);return 0===n.length&&delete n[0],r?new j(e):e}}),_}var m,y=!0,d=null,b=!1,_=[],j=[],C=0,w={},x={},O=+new Date+"",E=75,S=40,A=" \t\x0B\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000",I=/\b__p\+='';/g,B=/\b(__p\+=)''\+/g,N=/(__e\(.*?\)|\b__t\))\+'';/g,P=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,z=/\w*$/,F=/<%=([\s\S]+?)%>/g,$=RegExp("^["+A+"]*0+(?=.$)"),D=/($^)/,R=(R=/\bthis\b/)&&R.test(h)&&R,q=/['\n\r\t\u2028\u2029\\]/g,T="Array Boolean Date Error Function Math Number Object RegExp String _ attachEvent clearTimeout isFinite isNaN parseInt setImmediate setTimeout".split(" "),W="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),L="[object Arguments]",G="[object Array]",H="[object Boolean]",J="[object Date]",K="[object Error]",M="[object Function]",U="[object Number]",V="[object Object]",Q="[object RegExp]",X="[object String]",Y={}; +Y[M]=b,Y[L]=Y[G]=Y[H]=Y[J]=Y[U]=Y[V]=Y[Q]=Y[X]=y;var Z={"boolean":b,"function":y,object:y,number:b,string:b,undefined:b},nt={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},tt=Z[typeof exports]&&exports,rt=Z[typeof module]&&module&&module.exports==tt&&module,et=Z[typeof global]&&global;!et||et.global!==et&&et.window!==et||(n=et);var ut=h();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(n._=ut, define(function(){return ut})):tt&&!tt.nodeType?rt?(rt.exports=ut)._=ut:tt._=ut:n._=ut }(this); \ No newline at end of file diff --git a/dist/lodash.js b/dist/lodash.js index a21b6bf56..473dac71a 100644 --- a/dist/lodash.js +++ b/dist/lodash.js @@ -456,7 +456,6 @@ /** Native method shortcuts */ var ceil = Math.ceil, clearTimeout = context.clearTimeout, - concat = arrayRef.concat, floor = Math.floor, fnToString = Function.prototype.toString, getPrototypeOf = reNative.test(getPrototypeOf = Object.getPrototypeOf) && getPrototypeOf, @@ -2152,7 +2151,7 @@ if (isFunc) { callback = lodash.createCallback(callback, thisArg); } else { - var props = concat.apply(arrayRef, nativeSlice.call(arguments, 1)); + var props = basicFlatten(nativeSlice.call(arguments, 1)); } forIn(object, function(value, key, object) { if (isFunc @@ -2203,8 +2202,9 @@ * @memberOf _ * @category Objects * @param {Object} object The source object. - * @param {Array|Function|String} callback|[prop1, prop2, ...] The function called - * per iteration or properties to pick, either as individual arguments or arrays. + * @param {Array|Function|String} callback|[prop1, prop2, ...] The function + * called per iteration or property names to pick, specified as individual + * property names or arrays of property names. * @param {Mixed} [thisArg] The `this` binding of `callback`. * @returns {Object} Returns an object composed of the picked properties. * @example @@ -2221,7 +2221,7 @@ var result = {}; if (typeof callback != 'function') { var index = -1, - props = concat.apply(arrayRef, nativeSlice.call(arguments, 1)), + props = basicFlatten(nativeSlice.call(arguments, 1)), length = isObject(object) ? props.length : 0; while (++index < length) { @@ -2328,8 +2328,8 @@ * @memberOf _ * @category Collections * @param {Array|Object|String} collection The collection to iterate over. - * @param {Array|Number|String} [index1, index2, ...] The indexes of - * `collection` to retrieve, either as individual arguments or arrays. + * @param {Array|Number|String} [index1, index2, ...] The indexes of `collection` + * to retrieve, specified as individual indexes or arrays of indexes. * @returns {Array} Returns a new array of elements corresponding to the * provided indexes. * @example @@ -2342,7 +2342,7 @@ */ function at(collection) { var index = -1, - props = concat.apply(arrayRef, nativeSlice.call(arguments, 1)), + props = basicFlatten(nativeSlice.call(arguments, 1)), length = props.length, result = Array(length); @@ -3375,16 +3375,17 @@ } /** - * Creates an array of `array` elements not present in the other arrays - * using strict equality for comparisons, i.e. `===`. + * Creates an arrat with all occurrences of the passed values removed using + * using strict equality for comparisons, i.e. `===`. Values to exclude may + * be specified as individual arguments or as arrays. * * @static * @memberOf _ * @category Arrays * @param {Array} array The array to process. - * @param {Array} [array1, array2, ...] Arrays to check. - * @returns {Array} Returns a new array of `array` elements not present in the - * other arrays. + * @param {Array} [array1, array2, ...] The values to exclude, specified as + * individual values or arrays of values. + * @returns {Array} Returns a new filtered array. * @example * * _.difference([1, 2, 3, 4, 5], [5, 2, 10]); @@ -3394,7 +3395,7 @@ var index = -1, indexOf = getIndexOf(), length = array ? array.length : 0, - seen = concat.apply(arrayRef, nativeSlice.call(arguments, 1)), + seen = basicFlatten(nativeSlice.call(arguments, 1)), result = []; var isLarge = length >= largeArraySize && indexOf === basicIndexOf; @@ -4059,10 +4060,7 @@ * // => [1, 2, 3, 101, 10] */ function union(array) { - if (!array) { - arguments[0] = arrayRef; - } - return basicUniq(basicFlatten(arguments, true)); + return basicUniq(basicFlatten(compact(arguments), true)); } /** @@ -4111,14 +4109,14 @@ var uniq = overloadWrapper(basicUniq); /** - * Creates an array with all occurrences of the passed values removed using + * Creates an array excluding all occurrences of the passed values using * strict equality for comparisons, i.e. `===`. * * @static * @memberOf _ * @category Arrays * @param {Array} array The array to filter. - * @param {Mixed} [value1, value2, ...] Values to remove. + * @param {Mixed} [value1, value2, ...] Values to exclude. * @returns {Array} Returns a new filtered array. * @example * @@ -4260,7 +4258,8 @@ * @memberOf _ * @category Functions * @param {Object} object The object to bind and assign the bound methods to. - * @param {String} [methodName1, methodName2, ...] Method names on the object to bind. + * @param {String} [methodName1, methodName2, ...] The object method names to + * bind, specified as individual values or arrays of values. * @returns {Object} Returns `object`. * @example * @@ -4274,7 +4273,7 @@ * // => alerts 'clicked docs', when the button is clicked */ function bindAll(object) { - var funcs = arguments.length > 1 ? concat.apply(arrayRef, nativeSlice.call(arguments, 1)) : functions(object), + var funcs = arguments.length > 1 ? basicFlatten(nativeSlice.call(arguments, 1)) : functions(object), index = -1, length = funcs.length; diff --git a/dist/lodash.min.js b/dist/lodash.min.js index 8037e3647..d41a93d5a 100644 --- a/dist/lodash.min.js +++ b/dist/lodash.min.js @@ -3,45 +3,45 @@ * Lo-Dash 1.3.1 (Custom Build) lodash.com/license | Underscore.js 1.5.1 underscorejs.org/LICENSE * Build: `lodash modern -o ./dist/lodash.js` */ -;!function(n){function t(n,t,e){e=(e||0)-1;for(var r=n.length;++et||typeof n=="undefined")return 1;if(ne?0:e);++rt||typeof n=="undefined")return 1;if(ne?0:e);++r=C&&i===t,g=u||v?f():s;if(v){var y=o(g);y?(i=e,g=y):(v=b,g=u?g:(l(g),s))}for(;++ai(g,h))&&((u||v)&&g.push(h),s.push(y))}return v?(l(g.b),p(g)):u&&l(g),s}function ut(n,t,e,r){function u(){var r=arguments,c=o?this:t; -return a||(n=t[i]),e.length&&(r=r.length?(r=Oe.call(r),f?r.concat(e):e.concat(r)):e),this instanceof u?(c=ht(n.prototype)?be(n.prototype):{},r=n.apply(c,r),ht(r)?r:c):n.apply(c,r)}var a=yt(n),o=!e,i=t;if(o){var f=r;e=t}else if(!a){if(!r)throw new ne;t=n}return u}function at(n){return Be[n]}function ot(){var n=(n=nt.indexOf)===Ft?t:n;return n}function it(n){return function(t,e,r,u){return typeof e!="boolean"&&e!=h&&(u=r,r=u&&u[e]===t?g:e,e=b),r!=h&&(r=nt.createCallback(r,u)),n(t,e,r,u)}}function ft(n){var t,e; -return n&&ye.call(n)==U&&(t=n.constructor,!yt(t)||t instanceof t)?(x(n,function(n,t){e=t}),e===g||pe.call(n,e)):b}function ct(n){return Fe[n]}function lt(n){return n&&typeof n=="object"?ye.call(n)==q:b}function pt(n,t,e,r,u,a){var o=n;if(typeof t!="boolean"&&t!=h&&(r=e,e=t,t=b),typeof e=="function"){if(e=typeof r=="undefined"?e:nt.createCallback(e,r,1),o=e(o),typeof o!="undefined")return o;o=n}if(r=ht(o)){var i=ye.call(o);if(!H[i])return o;var c=Ne(o)}if(!r||!t)return r?c?s(o):Q({},o):o;switch(r=Ae[i],i){case W:case P:return new r(+o); -case M:case G:return new r(o);case V:return r(o.source,N.exec(o))}i=!u,u||(u=f()),a||(a=f());for(var p=u.length;p--;)if(u[p]==n)return a[p];return o=c?r(o.length):{},c&&(pe.call(n,"index")&&(o.index=n.index),pe.call(n,"input")&&(o.input=n.input)),u.push(n),a.push(o),(c?xt:d)(n,function(n,r){o[r]=pt(n,t,e,g,u,a)}),i&&(l(u),l(a)),o}function st(n){var t=[];return x(n,function(n,e){yt(n)&&t.push(e)}),t.sort()}function vt(n){for(var t=-1,e=$e(n),r=e.length,u={};++te?je(0,a+e):e)||0,a&&typeof a=="number"?o=-1<(mt(n)?n.indexOf(t,e):u(n,t,e)):d(n,function(n){return++ra&&(a=i) -}}else t=!t&&mt(n)?u:nt.createCallback(t,e),xt(n,function(n,e,u){e=t(n,e,u),e>r&&(r=e,a=n)});return a}function St(n,t){var e=-1,r=n?n.length:0;if(typeof r=="number")for(var u=Vt(r);++earguments.length;t=nt.createCallback(t,r,4);var a=-1,o=n.length;if(typeof o=="number")for(u&&(e=n[++a]);++aarguments.length; -if(typeof u!="number")var o=$e(n),u=o.length;return t=nt.createCallback(t,r,4),xt(n,function(r,i,f){i=o?o[--u]:--u,e=a?(a=b,n[i]):t(e,n[i],i,f)}),e}function Nt(n,t,e){var r;t=nt.createCallback(t,e),e=-1;var u=n?n.length:0;if(typeof u=="number")for(;++e=C&&u===t;if(c){var l=o(i);l?(u=e,i=l):c=b}for(;++ru(i,l)&&f.push(l); -return c&&p(i),f}function Bt(n,t,e){if(n){var r=0,u=n.length;if(typeof t!="number"&&t!=h){var a=-1;for(t=nt.createCallback(t,e);++ar?je(0,u+r):r||0}else if(r)return r=Tt(n,e),n[r]===e?r:-1;return n?t(n,e,r):-1}function Rt(n,t,e){if(typeof t!="number"&&t!=h){var r=0,u=-1,a=n?n.length:0;for(t=nt.createCallback(t,e);++u>>1,e(n[r])e?0:e);++tc&&(i=n.apply(f,o));else{var e=new Ht;!s&&!m&&(l=e);var r=p-(e-l);0/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:$,variable:"",imports:{_:nt}};var Ne=me,$e=j.o=ke?function(n){return ht(n)?ke(n):[]}:Y,Be={"&":"&","<":"<",">":">",'"':""","'":"'"},Fe=vt(Be),Re=Yt("("+$e(Fe).join("|")+")","g"),Te=Yt("["+$e(Be).join("")+"]","g"),De=it(et),qe=it(rt);Se&&X&&typeof ve=="function"&&(Pt=zt(ve,r)); -var ze=8==Ce(O+"08")?Ce:function(n,t){return Ce(mt(n)?n.replace(B,""):n,t||0)};return nt.after=function(n,t){return function(){return 1>--n?t.apply(this,arguments):void 0}},nt.assign=Q,nt.at=function(n){for(var t=-1,e=ie.apply(te,Oe.call(arguments,1)),r=e.length,u=Vt(r);++t=C&&o(a?r[a]:y)}n:for(;++c(b?e(b,h):s(y,h))){for(a=u,(b||y).push(h);--a;)if(b=i[a],0>(b?e(b,h):s(r[a],h)))continue n;g.push(h)}}for(;u--;)(b=i[u])&&p(b);return l(i),l(y),g},nt.invert=vt,nt.invoke=function(n,t){var e=Oe.call(arguments,2),r=-1,u=typeof t=="function",a=n?n.length:0,o=Vt(typeof a=="number"?a:0);return xt(n,function(n){o[++r]=(u?t:n[t]).apply(n,e)}),o},nt.keys=$e,nt.map=Ot,nt.max=Et,nt.memoize=function(n,t){function e(){var r=e.cache,u=w+(t?t.apply(this,arguments):arguments[0]);return pe.call(r,u)?r[u]:r[u]=n.apply(this,arguments) -}return e.cache={},e},nt.merge=dt,nt.min=function(n,t,e){var r=1/0,a=r;if(!t&&Ne(n)){e=-1;for(var o=n.length;++er(o,e))&&(a[e]=n)}),a},nt.once=function(n){var t,e;return function(){return t?e:(t=y,e=n.apply(this,arguments),n=h,e) -}},nt.pairs=function(n){for(var t=-1,e=$e(n),r=e.length,u=Vt(r);++te?je(0,r+e):we(e,r-1))+1);r--;)if(n[r]===t)return r;return-1},nt.mixin=Mt,nt.noConflict=function(){return r._=re,this},nt.parseInt=ze,nt.random=function(n,t){n==h&&t==h&&(t=1),n=+n||0,t==h?(t=n,n=0):t=+t||0;var e=xe();return n%1||t%1?n+we(e*(t-n+parseFloat("1e-"+((e+"").length-1))),t):n+fe(e*(t-n+1))},nt.reduce=At,nt.reduceRight=It,nt.result=function(n,t){var e=n?n[t]:g; -return yt(e)?n[t]():e},nt.runInContext=v,nt.size=function(n){var t=n?n.length:0;return typeof t=="number"?t:$e(n).length},nt.some=Nt,nt.sortedIndex=Tt,nt.template=function(n,t,e){var r=nt.templateSettings;n||(n=""),e=L({},e,r);var u,a=L({},e.imports,r.imports),r=$e(a),a=_t(a),o=0,f=e.interpolate||F,c="__p+='",f=Yt((e.escape||F).source+"|"+f.source+"|"+(f===$?I:F).source+"|"+(e.evaluate||F).source+"|$","g");n.replace(f,function(t,e,r,a,f,l){return r||(r=a),c+=n.slice(o,l).replace(T,i),e&&(c+="'+__e("+e+")+'"),f&&(u=y,c+="';"+f+";__p+='"),r&&(c+="'+((__t=("+r+"))==null?'':__t)+'"),o=l+t.length,t -}),c+="';\n",f=e=e.variable,f||(e="obj",c="with("+e+"){"+c+"}"),c=(u?c.replace(E,""):c).replace(S,"$1").replace(A,"$1;"),c="function("+e+"){"+(f?"":e+"||("+e+"={});")+"var __t,__p='',__e=_.escape"+(u?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+c+"return __p}";try{var l=Jt(r,"return "+c).apply(g,a)}catch(p){throw p.source=c,p}return t?l(t):(l.source=c,l)},nt.unescape=function(n){return n==h?"":Zt(n).replace(Re,ct)},nt.uniqueId=function(n){var t=++_;return Zt(n==h?"":n)+t -},nt.all=jt,nt.any=Nt,nt.detect=Ct,nt.findWhere=Ct,nt.foldl=At,nt.foldr=It,nt.include=kt,nt.inject=At,d(nt,function(n,t){nt.prototype[t]||(nt.prototype[t]=function(){var t=[this.__wrapped__];return se.apply(t,arguments),n.apply(nt,t)})}),nt.first=Bt,nt.last=function(n,t,e){if(n){var r=0,u=n.length;if(typeof t!="number"&&t!=h){var a=u;for(t=nt.createCallback(t,e);a--&&t(n[a],a,n);)r++}else if(r=t,r==h||e)return n[u-1];return s(n,je(0,u-r))}},nt.take=Bt,nt.head=Bt,d(nt,function(n,t){nt.prototype[t]||(nt.prototype[t]=function(t,e){var r=n(this.__wrapped__,t,e); -return t==h||e&&typeof t!="function"?r:new tt(r)})}),nt.VERSION="1.3.1",nt.prototype.toString=function(){return Zt(this.__wrapped__)},nt.prototype.value=Ut,nt.prototype.valueOf=Ut,xt(["join","pop","shift"],function(n){var t=te[n];nt.prototype[n]=function(){return t.apply(this.__wrapped__,arguments)}}),xt(["push","reverse","sort","unshift"],function(n){var t=te[n];nt.prototype[n]=function(){return t.apply(this.__wrapped__,arguments),this}}),xt(["concat","slice","splice"],function(n){var t=te[n];nt.prototype[n]=function(){return new tt(t.apply(this.__wrapped__,arguments)) -}}),nt}var g,y=!0,h=null,b=!1,m=[],d=[],_=0,k={},j={},w=+new Date+"",C=75,x=40,O=" \t\x0B\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000",E=/\b__p\+='';/g,S=/\b(__p\+=)''\+/g,A=/(__e\(.*?\)|\b__t\))\+'';/g,I=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,N=/\w*$/,$=/<%=([\s\S]+?)%>/g,B=RegExp("^["+O+"]*0+(?=.$)"),F=/($^)/,R=(R=/\bthis\b/)&&R.test(v)&&R,T=/['\n\r\t\u2028\u2029\\]/g,D="Array Boolean Date Function Math Number Object RegExp String _ attachEvent clearTimeout isFinite isNaN parseInt setImmediate setTimeout".split(" "),q="[object Arguments]",z="[object Array]",W="[object Boolean]",P="[object Date]",K="[object Function]",M="[object Number]",U="[object Object]",V="[object RegExp]",G="[object String]",H={}; -H[K]=b,H[q]=H[z]=H[W]=H[P]=H[M]=H[U]=H[V]=H[G]=y;var J={"boolean":b,"function":y,object:y,number:b,string:b,undefined:b},L={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},Q=J[typeof exports]&&exports,X=J[typeof module]&&module&&module.exports==Q&&module,Y=J[typeof global]&&global;!Y||Y.global!==Y&&Y.window!==Y||(n=Y);var Z=v();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(n._=Z, define(function(){return Z})):Q&&!Q.nodeType?X?(X.exports=Z)._=Z:Q._=Z:n._=Z +}function tt(n){this.__wrapped__=n}function et(n,t,e){for(var r=-1,u=n?n.length:0,a=[];++r=C&&i===t,g=u||v?f():s;if(v){var h=o(g);h?(i=e,g=h):(v=b,g=u?g:(l(g),s))}for(;++ai(g,y))&&((u||v)&&g.push(y),s.push(h))}return v?(l(g.b),p(g)):u&&l(g),s}function ut(n,t,e,r){function u(){var r=arguments,c=o?this:t; +return a||(n=t[i]),e.length&&(r=r.length?(r=Oe.call(r),f?r.concat(e):e.concat(r)):e),this instanceof u?(c=yt(n.prototype)?be(n.prototype):{},r=n.apply(c,r),yt(r)?r:c):n.apply(c,r)}var a=ht(n),o=!e,i=t;if(o){var f=r;e=t}else if(!a){if(!r)throw new te;t=n}return u}function at(n){return Be[n]}function ot(){var n=(n=nt.indexOf)===Rt?t:n;return n}function it(n){return function(t,e,r,u){return typeof e!="boolean"&&e!=y&&(u=r,r=u&&u[e]===t?g:e,e=b),r!=y&&(r=nt.createCallback(r,u)),n(t,e,r,u)}}function ft(n){var t,e; +return n&&he.call(n)==U&&(t=n.constructor,!ht(t)||t instanceof t)?(x(n,function(n,t){e=t}),e===g||pe.call(n,e)):b}function ct(n){return Fe[n]}function lt(n){return n&&typeof n=="object"?he.call(n)==q:b}function pt(n,t,e,r,u,a){var o=n;if(typeof t!="boolean"&&t!=y&&(r=e,e=t,t=b),typeof e=="function"){if(e=typeof r=="undefined"?e:nt.createCallback(e,r,1),o=e(o),typeof o!="undefined")return o;o=n}if(r=yt(o)){var i=he.call(o);if(!H[i])return o;var c=Ne(o)}if(!r||!t)return r?c?s(o):Q({},o):o;switch(r=Ae[i],i){case W:case P:return new r(+o); +case M:case G:return new r(o);case V:return r(o.source,N.exec(o))}i=!u,u||(u=f()),a||(a=f());for(var p=u.length;p--;)if(u[p]==n)return a[p];return o=c?r(o.length):{},c&&(pe.call(n,"index")&&(o.index=n.index),pe.call(n,"input")&&(o.input=n.input)),u.push(n),a.push(o),(c?xt:d)(n,function(n,r){o[r]=pt(n,t,e,g,u,a)}),i&&(l(u),l(a)),o}function st(n){var t=[];return x(n,function(n,e){ht(n)&&t.push(e)}),t.sort()}function vt(n){for(var t=-1,e=$e(n),r=e.length,u={};++te?je(0,a+e):e)||0,a&&typeof a=="number"?o=-1<(mt(n)?n.indexOf(t,e):u(n,t,e)):d(n,function(n){return++ra&&(a=i) +}}else t=!t&&mt(n)?u:nt.createCallback(t,e),xt(n,function(n,e,u){e=t(n,e,u),e>r&&(r=e,a=n)});return a}function St(n,t){var e=-1,r=n?n.length:0;if(typeof r=="number")for(var u=Gt(r);++earguments.length;t=nt.createCallback(t,r,4);var a=-1,o=n.length;if(typeof o=="number")for(u&&(e=n[++a]);++aarguments.length; +if(typeof u!="number")var o=$e(n),u=o.length;return t=nt.createCallback(t,r,4),xt(n,function(r,i,f){i=o?o[--u]:--u,e=a?(a=b,n[i]):t(e,n[i],i,f)}),e}function Nt(n,t,e){var r;t=nt.createCallback(t,e),e=-1;var u=n?n.length:0;if(typeof u=="number")for(;++e=C&&u===t; +if(c){var l=o(i);l?(u=e,i=l):c=b}for(;++ru(i,l)&&f.push(l);return c&&p(i),f}function Ft(n,t,e){if(n){var r=0,u=n.length;if(typeof t!="number"&&t!=y){var a=-1;for(t=nt.createCallback(t,e);++ar?je(0,u+r):r||0}else if(r)return r=Dt(n,e),n[r]===e?r:-1;return n?t(n,e,r):-1}function Tt(n,t,e){if(typeof t!="number"&&t!=y){var r=0,u=-1,a=n?n.length:0; +for(t=nt.createCallback(t,e);++u>>1,e(n[r])e?0:e);++tc&&(i=n.apply(f,o));else{var e=new Jt;!s&&!m&&(l=e);var r=p-(e-l);0/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:$,variable:"",imports:{_:nt}};var Ne=me,$e=j.o=ke?function(n){return yt(n)?ke(n):[]}:Y,Be={"&":"&","<":"<",">":">",'"':""","'":"'"},Fe=vt(Be),Re=Zt("("+$e(Fe).join("|")+")","g"),Te=Zt("["+$e(Be).join("")+"]","g"),De=it(et),qe=it(rt);Se&&X&&typeof ve=="function"&&(Kt=Wt(ve,r)); +var ze=8==Ce(O+"08")?Ce:function(n,t){return Ce(mt(n)?n.replace(B,""):n,t||0)};return nt.after=function(n,t){return function(){return 1>--n?t.apply(this,arguments):void 0}},nt.assign=Q,nt.at=function(n){for(var t=-1,e=et(Oe.call(arguments,1)),r=e.length,u=Gt(r);++t=C&&o(a?r[a]:h)}n:for(;++c(b?e(b,y):s(h,y))){for(a=u,(b||h).push(y);--a;)if(b=i[a],0>(b?e(b,y):s(r[a],y)))continue n; +g.push(y)}}for(;u--;)(b=i[u])&&p(b);return l(i),l(h),g},nt.invert=vt,nt.invoke=function(n,t){var e=Oe.call(arguments,2),r=-1,u=typeof t=="function",a=n?n.length:0,o=Gt(typeof a=="number"?a:0);return xt(n,function(n){o[++r]=(u?t:n[t]).apply(n,e)}),o},nt.keys=$e,nt.map=Ot,nt.max=Et,nt.memoize=function(n,t){function e(){var r=e.cache,u=w+(t?t.apply(this,arguments):arguments[0]);return pe.call(r,u)?r[u]:r[u]=n.apply(this,arguments)}return e.cache={},e},nt.merge=dt,nt.min=function(n,t,e){var r=1/0,a=r; +if(!t&&Ne(n)){e=-1;for(var o=n.length;++er(o,e))&&(a[e]=n)}),a},nt.once=function(n){var t,e;return function(){return t?e:(t=h,e=n.apply(this,arguments),n=y,e)}},nt.pairs=function(n){for(var t=-1,e=$e(n),r=e.length,u=Gt(r);++te?je(0,r+e):we(e,r-1))+1);r--;)if(n[r]===t)return r;return-1},nt.mixin=Ut,nt.noConflict=function(){return r._=ue,this},nt.parseInt=ze,nt.random=function(n,t){n==y&&t==y&&(t=1),n=+n||0,t==y?(t=n,n=0):t=+t||0;var e=xe();return n%1||t%1?n+we(e*(t-n+parseFloat("1e-"+((e+"").length-1))),t):n+fe(e*(t-n+1))},nt.reduce=At,nt.reduceRight=It,nt.result=function(n,t){var e=n?n[t]:g; +return ht(e)?n[t]():e},nt.runInContext=v,nt.size=function(n){var t=n?n.length:0;return typeof t=="number"?t:$e(n).length},nt.some=Nt,nt.sortedIndex=Dt,nt.template=function(n,t,e){var r=nt.templateSettings;n||(n=""),e=L({},e,r);var u,a=L({},e.imports,r.imports),r=$e(a),a=_t(a),o=0,f=e.interpolate||F,c="__p+='",f=Zt((e.escape||F).source+"|"+f.source+"|"+(f===$?I:F).source+"|"+(e.evaluate||F).source+"|$","g");n.replace(f,function(t,e,r,a,f,l){return r||(r=a),c+=n.slice(o,l).replace(T,i),e&&(c+="'+__e("+e+")+'"),f&&(u=h,c+="';"+f+";__p+='"),r&&(c+="'+((__t=("+r+"))==null?'':__t)+'"),o=l+t.length,t +}),c+="';\n",f=e=e.variable,f||(e="obj",c="with("+e+"){"+c+"}"),c=(u?c.replace(E,""):c).replace(S,"$1").replace(A,"$1;"),c="function("+e+"){"+(f?"":e+"||("+e+"={});")+"var __t,__p='',__e=_.escape"+(u?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+c+"return __p}";try{var l=Lt(r,"return "+c).apply(g,a)}catch(p){throw p.source=c,p}return t?l(t):(l.source=c,l)},nt.unescape=function(n){return n==y?"":ne(n).replace(Re,ct)},nt.uniqueId=function(n){var t=++_;return ne(n==y?"":n)+t +},nt.all=jt,nt.any=Nt,nt.detect=Ct,nt.findWhere=Ct,nt.foldl=At,nt.foldr=It,nt.include=kt,nt.inject=At,d(nt,function(n,t){nt.prototype[t]||(nt.prototype[t]=function(){var t=[this.__wrapped__];return se.apply(t,arguments),n.apply(nt,t)})}),nt.first=Ft,nt.last=function(n,t,e){if(n){var r=0,u=n.length;if(typeof t!="number"&&t!=y){var a=u;for(t=nt.createCallback(t,e);a--&&t(n[a],a,n);)r++}else if(r=t,r==y||e)return n[u-1];return s(n,je(0,u-r))}},nt.take=Ft,nt.head=Ft,d(nt,function(n,t){nt.prototype[t]||(nt.prototype[t]=function(t,e){var r=n(this.__wrapped__,t,e); +return t==y||e&&typeof t!="function"?r:new tt(r)})}),nt.VERSION="1.3.1",nt.prototype.toString=function(){return ne(this.__wrapped__)},nt.prototype.value=Vt,nt.prototype.valueOf=Vt,xt(["join","pop","shift"],function(n){var t=ee[n];nt.prototype[n]=function(){return t.apply(this.__wrapped__,arguments)}}),xt(["push","reverse","sort","unshift"],function(n){var t=ee[n];nt.prototype[n]=function(){return t.apply(this.__wrapped__,arguments),this}}),xt(["concat","slice","splice"],function(n){var t=ee[n];nt.prototype[n]=function(){return new tt(t.apply(this.__wrapped__,arguments)) +}}),nt}var g,h=!0,y=null,b=!1,m=[],d=[],_=0,k={},j={},w=+new Date+"",C=75,x=40,O=" \t\x0B\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000",E=/\b__p\+='';/g,S=/\b(__p\+=)''\+/g,A=/(__e\(.*?\)|\b__t\))\+'';/g,I=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,N=/\w*$/,$=/<%=([\s\S]+?)%>/g,B=RegExp("^["+O+"]*0+(?=.$)"),F=/($^)/,R=(R=/\bthis\b/)&&R.test(v)&&R,T=/['\n\r\t\u2028\u2029\\]/g,D="Array Boolean Date Function Math Number Object RegExp String _ attachEvent clearTimeout isFinite isNaN parseInt setImmediate setTimeout".split(" "),q="[object Arguments]",z="[object Array]",W="[object Boolean]",P="[object Date]",K="[object Function]",M="[object Number]",U="[object Object]",V="[object RegExp]",G="[object String]",H={}; +H[K]=b,H[q]=H[z]=H[W]=H[P]=H[M]=H[U]=H[V]=H[G]=h;var J={"boolean":b,"function":h,object:h,number:b,string:b,undefined:b},L={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},Q=J[typeof exports]&&exports,X=J[typeof module]&&module&&module.exports==Q&&module,Y=J[typeof global]&&global;!Y||Y.global!==Y&&Y.window!==Y||(n=Y);var Z=v();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(n._=Z, define(function(){return Z})):Q&&!Q.nodeType?X?(X.exports=Z)._=Z:Q._=Z:n._=Z }(this); \ No newline at end of file diff --git a/dist/lodash.underscore.js b/dist/lodash.underscore.js index fbd4d38c4..a319e75b3 100644 --- a/dist/lodash.underscore.js +++ b/dist/lodash.underscore.js @@ -176,7 +176,6 @@ /** Native method shortcuts */ var ceil = Math.ceil, - concat = arrayRef.concat, floor = Math.floor, hasOwnProperty = objectProto.hasOwnProperty, push = arrayRef.push, @@ -1318,7 +1317,7 @@ */ function omit(object) { var indexOf = getIndexOf(), - props = concat.apply(arrayRef, nativeSlice.call(arguments, 1)), + props = flatten(nativeSlice.call(arguments, 1)), result = {}; forIn(object, function(value, key) { @@ -1367,8 +1366,9 @@ * @memberOf _ * @category Objects * @param {Object} object The source object. - * @param {Array|Function|String} callback|[prop1, prop2, ...] The function called - * per iteration or properties to pick, either as individual arguments or arrays. + * @param {Array|Function|String} callback|[prop1, prop2, ...] The function + * called per iteration or property names to pick, specified as individual + * property names or arrays of property names. * @param {Mixed} [thisArg] The `this` binding of `callback`. * @returns {Object} Returns an object composed of the picked properties. * @example @@ -1383,7 +1383,7 @@ */ function pick(object) { var index = -1, - props = concat.apply(arrayRef, nativeSlice.call(arguments, 1)), + props = flatten(nativeSlice.call(arguments, 1)), length = props.length, result = {}; @@ -2466,16 +2466,17 @@ } /** - * Creates an array of `array` elements not present in the other arrays - * using strict equality for comparisons, i.e. `===`. + * Creates an arrat with all occurrences of the passed values removed using + * using strict equality for comparisons, i.e. `===`. Values to exclude may + * be specified as individual arguments or as arrays. * * @static * @memberOf _ * @category Arrays * @param {Array} array The array to process. - * @param {Array} [array1, array2, ...] Arrays to check. - * @returns {Array} Returns a new array of `array` elements not present in the - * other arrays. + * @param {Array} [array1, array2, ...] The values to exclude, specified as + * individual values or arrays of values. + * @returns {Array} Returns a new filtered array. * @example * * _.difference([1, 2, 3, 4, 5], [5, 2, 10]); @@ -2485,7 +2486,7 @@ var index = -1, indexOf = getIndexOf(), length = array.length, - flattened = concat.apply(arrayRef, nativeSlice.call(arguments, 1)), + flattened = flatten(nativeSlice.call(arguments, 1)), result = []; while (++index < length) { @@ -3096,10 +3097,7 @@ * // => [1, 2, 3, 101, 10] */ function union(array) { - if (!array) { - arguments[0] = arrayRef; - } - return uniq(flatten(arguments, true)); + return uniq(flatten(compact(arguments), true)); } /** @@ -3179,14 +3177,14 @@ } /** - * Creates an array with all occurrences of the passed values removed using + * Creates an array excluding all occurrences of the passed values using * strict equality for comparisons, i.e. `===`. * * @static * @memberOf _ * @category Arrays * @param {Array} array The array to filter. - * @param {Mixed} [value1, value2, ...] Values to remove. + * @param {Mixed} [value1, value2, ...] Values to exclude. * @returns {Array} Returns a new filtered array. * @example * @@ -3327,7 +3325,8 @@ * @memberOf _ * @category Functions * @param {Object} object The object to bind and assign the bound methods to. - * @param {String} [methodName1, methodName2, ...] Method names on the object to bind. + * @param {String} [methodName1, methodName2, ...] The object method names to + * bind, specified as individual values or arrays of values. * @returns {Object} Returns `object`. * @example * @@ -3341,7 +3340,7 @@ * // => alerts 'clicked docs', when the button is clicked */ function bindAll(object) { - var funcs = arguments.length > 1 ? concat.apply(arrayRef, nativeSlice.call(arguments, 1)) : functions(object), + var funcs = arguments.length > 1 ? flatten(nativeSlice.call(arguments, 1)) : functions(object), index = -1, length = funcs.length; diff --git a/dist/lodash.underscore.min.js b/dist/lodash.underscore.min.js index 2cd1ceb6c..e8421608a 100644 --- a/dist/lodash.underscore.min.js +++ b/dist/lodash.underscore.min.js @@ -3,34 +3,34 @@ * Lo-Dash 1.3.1 (Custom Build) lodash.com/license | Underscore.js 1.5.1 underscorejs.org/LICENSE * Build: `lodash underscore exports="amd,commonjs,global,node" -o ./dist/lodash.underscore.js` */ -;!function(n){function t(n,t,r){r=(r||0)-1;for(var e=n.length;++rt||typeof n=="undefined")return 1;if(nt||typeof n=="undefined")return 1;if(ne&&(e=r,u=n)}); -else for(;++iu&&(u=r);return u}function R(n,t){var r=-1,e=n?n.length:0;if(typeof e=="number")for(var u=Array(e);++rarguments.length;t=G(t,e,4);var i=-1,o=n.length;if(typeof o=="number")for(u&&(r=n[++i]);++iarguments.length;if(typeof u!="number")var o=qt(n),u=o.length;return t=G(t,e,4),S(n,function(e,a,f){a=o?o[--u]:--u,r=i?(i=!1,n[a]):t(r,n[a],a,f) -}),r}function D(n,t,r){var e;t=G(t,r),r=-1;var u=n?n.length:0;if(typeof u=="number")for(;++rr(u,o)&&i.push(o)}return i}function $(n,t,r){if(n){var e=0,u=n.length;if(typeof t!="number"&&null!=t){var i=-1;for(t=G(t,r);++ie?St(0,u+e):e||0}else if(e)return e=C(n,r),n[e]===r?e:-1;return n?t(n,r,e):-1}function W(n,t,r){if(typeof t!="number"&&null!=t){var e=0,u=-1,i=n?n.length:0;for(t=G(t,r);++u>>1,r(n[e])i(f,l))&&(r&&f.push(l),a.push(e))}return a}function U(){for(var n=-1,t=N(R(arguments,"length")),r=Array(0>t?0:t);++nl&&(a=n.apply(f,o));else{var r=new Date;!s&&!h&&(c=r);var e=p-(r-c);0/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""},xt||(f=function(n){if(b(n)){u.prototype=n;var t=new u;u.prototype=null}return t||{}}),s(arguments)||(s=function(n){return n&&typeof n=="object"?dt.call(n,"callee"):!1});var Dt=At||function(n){return n&&typeof n=="object"?jt.call(n)==tt:!1},At=function(n){var t,r=[]; -if(!n||!ft[typeof n])return r;for(t in n)dt.call(n,t)&&r.push(t);return r},qt={}.o=Tt?function(n){return b(n)?Tt(n):[]}:At,Mt={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},$t=y(Mt),zt=RegExp("("+qt($t).join("|")+")","g"),It=RegExp("["+qt(Mt).join("")+"]","g"),Wt=function(n,t){var r;if(!n||!ft[typeof n])return n;for(r in n)if(t(n[r],r,n)===Q)break;return n},Ct=function(n,t){var r;if(!n||!ft[typeof n])return n;for(r in n)if(dt.call(n,r)&&t(n[r],r,n)===Q)break;return n}; -d(/x/)&&(d=function(n){return typeof n=="function"&&"[object Function]"==jt.call(n)}),i.after=function(n,t){return function(){return 1>--n?t.apply(this,arguments):void 0}},i.bind=V,i.bindAll=function(n){for(var t=1u(o,a)){for(var f=r;--f;)if(0>u(t[f],a))continue n;o.push(a)}}return o},i.invert=y,i.invoke=function(n,t){var r=Rt.call(arguments,2),e=-1,u=typeof t=="function",i=n?n.length:0,o=Array(typeof i=="number"?i:0); -return S(n,function(n){o[++e]=(u?t:n[t]).apply(n,r)}),o},i.keys=qt,i.map=F,i.max=N,i.memoize=function(n,t){var r={};return function(){var e=X+(t?t.apply(this,arguments):arguments[0]);return dt.call(r,e)?r[e]:r[e]=n.apply(this,arguments)}},i.min=function(n,t,r){var e=1/0,u=e,i=-1,o=n?n.length:0;if(t||typeof o!="number")t=G(t,r),S(n,function(n,r,i){r=t(n,r,i),rt(r,u)&&(e[u]=n) -}),e},i.once=function(n){var t,r;return function(){return t?r:(t=!0,r=n.apply(this,arguments),n=null,r)}},i.pairs=function(n){for(var t=-1,r=qt(n),e=r.length,u=Array(e);++tr?St(0,e+r):Ft(r,e-1))+1);e--;)if(n[e]===t)return e;return-1},i.mixin=K,i.noConflict=function(){return n._=gt,this},i.random=function(n,t){null==n&&null==t&&(t=1),n=+n||0,null==t?(t=n,n=0):t=+t||0;var r=Nt();return n%1||t%1?n+Ft(r*(t-n+parseFloat("1e-"+((r+"").length-1))),t):n+_t(r*(t-n+1))},i.reduce=B,i.reduceRight=k,i.result=function(n,t){var r=n?n[t]:void 0; -return d(r)?n[t]():r},i.size=function(n){var t=n?n.length:0;return typeof t=="number"?t:qt(n).length},i.some=D,i.sortedIndex=C,i.template=function(n,t,r){var u=i.templateSettings;n||(n=""),r=g({},r,u);var o=0,a="__p+='",u=r.variable;n.replace(RegExp((r.escape||Y).source+"|"+(r.interpolate||Y).source+"|"+(r.evaluate||Y).source+"|$","g"),function(t,r,u,i,f){return a+=n.slice(o,f).replace(Z,e),r&&(a+="'+_['escape']("+r+")+'"),i&&(a+="';"+i+";__p+='"),u&&(a+="'+((__t=("+u+"))==null?'':__t)+'"),o=f+t.length,t -}),a+="';\n",u||(u="obj",a="with("+u+"||{}){"+a+"}"),a="function("+u+"){var __t,__p='',__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}"+a+"return __p}";try{var f=Function("_","return "+a)(i)}catch(l){throw l.source=a,l}return t?f(t):(f.source=a,f)},i.unescape=function(n){return null==n?"":(n+"").replace(zt,p)},i.uniqueId=function(n){var t=++L+"";return n?n+t:t},i.all=O,i.any=D,i.detect=T,i.findWhere=function(n,t){return q(n,t,!0)},i.foldl=B,i.foldr=k,i.include=A,i.inject=B,i.first=$,i.last=function(n,t,r){if(n){var e=0,u=n.length; -if(typeof t!="number"&&null!=t){var i=u;for(t=G(t,r);i--&&t(n[i],i,n);)e++}else if(e=t,null==e||r)return n[u-1];return Rt.call(n,St(0,u-e))}},i.take=$,i.head=$,i.VERSION="1.3.1",K(i),i.prototype.chain=function(){return this.__chain__=!0,this},i.prototype.value=function(){return this.__wrapped__},S("pop push reverse shift sort splice unshift".split(" "),function(n){var t=vt[n];i.prototype[n]=function(){var n=this.__wrapped__;return t.apply(n,arguments),!kt.spliceObjects&&0===n.length&&delete n[0],this -}}),S(["concat","join","slice"],function(n){var t=vt[n];i.prototype[n]=function(){var n=t.apply(this.__wrapped__,arguments);return this.__chain__&&(n=new o(n),n.__chain__=!0),n}}),typeof define=="function"&&typeof define.amd=="object"&&define.amd?(n._=i, define(function(){return i})):ct&&!ct.nodeType?pt?(pt.exports=i)._=i:ct._=i:n._=i}(this); \ No newline at end of file +if(null==n||null==t)return n===t;if(o=jt.call(n),u=jt.call(t),o!=u)return!1;switch(o){case et:case ut:return+n==+t;case it:return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case at:case ft:return n==t+""}if(u=o==rt,!u){if(n instanceof i||t instanceof i)return _(n.__wrapped__||n,t.__wrapped__||t,r,e);if(o!=ot)return!1;var o=n.constructor,a=t.constructor;if(o!=a&&(!d(o)||!(o instanceof o&&d(a)&&a instanceof a)))return!1}for(r||(r=[]),e||(e=[]),o=r.length;o--;)if(r[o]==n)return e[o]==t;var f=!0,l=0;if(r.push(n),e.push(t),u){if(l=t.length,f=l==n.length)for(;l--&&(f=_(n[l],t[l],r,e)););return f +}return Wt(t,function(t,u,i){return dt.call(i,u)?(l++,!(f=dt.call(n,u)&&_(n[u],t,r,e))&&X):void 0}),f&&Wt(n,function(n,t,r){return dt.call(r,t)?!(f=-1<--l)&&X:void 0}),f}function d(n){return typeof n=="function"}function b(n){return!(!n||!lt[typeof n])}function j(n){return typeof n=="number"||jt.call(n)==it}function w(n){return typeof n=="string"||jt.call(n)==ft}function x(n){for(var t=-1,r=qt(n),e=r.length,u=Array(e);++te&&(e=r,u=n)}); +else for(;++iu&&(u=r);return u}function R(n,t){var r=-1,e=n?n.length:0;if(typeof e=="number")for(var u=Array(e);++rarguments.length;t=H(t,e,4);var i=-1,o=n.length;if(typeof o=="number")for(u&&(r=n[++i]);++iarguments.length;if(typeof u!="number")var o=qt(n),u=o.length;return t=H(t,e,4),S(n,function(e,a,f){a=o?o[--u]:--u,r=i?(i=!1,n[a]):t(r,n[a],a,f) +}),r}function D(n,t,r){var e;t=H(t,r),r=-1;var u=n?n.length:0;if(typeof u=="number")for(;++rr(u,o)&&i.push(o)}return i}function z(n,t,r){if(n){var e=0,u=n.length;if(typeof t!="number"&&null!=t){var i=-1; +for(t=H(t,r);++ie?St(0,u+e):e||0}else if(e)return e=P(n,r),n[e]===r?e:-1;return n?t(n,r,e):-1}function C(n,t,r){if(typeof t!="number"&&null!=t){var e=0,u=-1,i=n?n.length:0;for(t=H(t,r);++u>>1,r(n[e])i(f,l))&&(r&&f.push(l),a.push(e))}return a}function V(){for(var n=-1,t=N(R(arguments,"length")),r=Array(0>t?0:t);++nl&&(a=n.apply(f,o));else{var r=new Date;!s&&!h&&(c=r); +var e=p-(r-c);0/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""},xt||(f=function(n){if(b(n)){u.prototype=n;var t=new u;u.prototype=null}return t||{}}),s(arguments)||(s=function(n){return n&&typeof n=="object"?dt.call(n,"callee"):!1});var Dt=At||function(n){return n&&typeof n=="object"?jt.call(n)==rt:!1},At=function(n){var t,r=[]; +if(!n||!lt[typeof n])return r;for(t in n)dt.call(n,t)&&r.push(t);return r},qt={}.o=Tt?function(n){return b(n)?Tt(n):[]}:At,Mt={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},$t=y(Mt),zt=RegExp("("+qt($t).join("|")+")","g"),It=RegExp("["+qt(Mt).join("")+"]","g"),Wt=function(n,t){var r;if(!n||!lt[typeof n])return n;for(r in n)if(t(n[r],r,n)===X)break;return n},Ct=function(n,t){var r;if(!n||!lt[typeof n])return n;for(r in n)if(dt.call(n,r)&&t(n[r],r,n)===X)break;return n}; +d(/x/)&&(d=function(n){return typeof n=="function"&&"[object Function]"==jt.call(n)}),i.after=function(n,t){return function(){return 1>--n?t.apply(this,arguments):void 0}},i.bind=G,i.bindAll=function(n){for(var t=1u(o,a)){for(var f=r;--f;)if(0>u(t[f],a))continue n;o.push(a)}}return o},i.invert=y,i.invoke=function(n,t){var r=Rt.call(arguments,2),e=-1,u=typeof t=="function",i=n?n.length:0,o=Array(typeof i=="number"?i:0);return S(n,function(n){o[++e]=(u?t:n[t]).apply(n,r)}),o},i.keys=qt,i.map=F,i.max=N,i.memoize=function(n,t){var r={}; +return function(){var e=Y+(t?t.apply(this,arguments):arguments[0]);return dt.call(r,e)?r[e]:r[e]=n.apply(this,arguments)}},i.min=function(n,t,r){var e=1/0,u=e,i=-1,o=n?n.length:0;if(t||typeof o!="number")t=H(t,r),S(n,function(n,r,i){r=t(n,r,i),rt(r,u)&&(e[u]=n)}),e},i.once=function(n){var t,r;return function(){return t?r:(t=!0,r=n.apply(this,arguments),n=null,r) +}},i.pairs=function(n){for(var t=-1,r=qt(n),e=r.length,u=Array(e);++tr?St(0,e+r):Ft(r,e-1))+1);e--;)if(n[e]===t)return e; +return-1},i.mixin=L,i.noConflict=function(){return n._=ht,this},i.random=function(n,t){null==n&&null==t&&(t=1),n=+n||0,null==t?(t=n,n=0):t=+t||0;var r=Nt();return n%1||t%1?n+Ft(r*(t-n+parseFloat("1e-"+((r+"").length-1))),t):n+_t(r*(t-n+1))},i.reduce=B,i.reduceRight=k,i.result=function(n,t){var r=n?n[t]:void 0;return d(r)?n[t]():r},i.size=function(n){var t=n?n.length:0;return typeof t=="number"?t:qt(n).length},i.some=D,i.sortedIndex=P,i.template=function(n,t,r){var u=i.templateSettings;n||(n=""),r=g({},r,u); +var o=0,a="__p+='",u=r.variable;n.replace(RegExp((r.escape||Z).source+"|"+(r.interpolate||Z).source+"|"+(r.evaluate||Z).source+"|$","g"),function(t,r,u,i,f){return a+=n.slice(o,f).replace(nt,e),r&&(a+="'+_['escape']("+r+")+'"),i&&(a+="';"+i+";__p+='"),u&&(a+="'+((__t=("+u+"))==null?'':__t)+'"),o=f+t.length,t}),a+="';\n",u||(u="obj",a="with("+u+"||{}){"+a+"}"),a="function("+u+"){var __t,__p='',__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}"+a+"return __p}";try{var f=Function("_","return "+a)(i) +}catch(l){throw l.source=a,l}return t?f(t):(f.source=a,f)},i.unescape=function(n){return null==n?"":(n+"").replace(zt,p)},i.uniqueId=function(n){var t=++Q+"";return n?n+t:t},i.all=O,i.any=D,i.detect=T,i.findWhere=function(n,t){return q(n,t,!0)},i.foldl=B,i.foldr=k,i.include=A,i.inject=B,i.first=z,i.last=function(n,t,r){if(n){var e=0,u=n.length;if(typeof t!="number"&&null!=t){var i=u;for(t=H(t,r);i--&&t(n[i],i,n);)e++}else if(e=t,null==e||r)return n[u-1];return Rt.call(n,St(0,u-e))}},i.take=z,i.head=z,i.VERSION="1.3.1",L(i),i.prototype.chain=function(){return this.__chain__=!0,this +},i.prototype.value=function(){return this.__wrapped__},S("pop push reverse shift sort splice unshift".split(" "),function(n){var t=gt[n];i.prototype[n]=function(){var n=this.__wrapped__;return t.apply(n,arguments),!kt.spliceObjects&&0===n.length&&delete n[0],this}}),S(["concat","join","slice"],function(n){var t=gt[n];i.prototype[n]=function(){var n=t.apply(this.__wrapped__,arguments);return this.__chain__&&(n=new o(n),n.__chain__=!0),n}}),typeof define=="function"&&typeof define.amd=="object"&&define.amd?(n._=i, define(function(){return i +})):pt&&!pt.nodeType?st?(st.exports=i)._=i:pt._=i:n._=i}(this); \ No newline at end of file diff --git a/lodash.js b/lodash.js index bd4dcfdfe..fdd897ce9 100644 --- a/lodash.js +++ b/lodash.js @@ -488,7 +488,6 @@ /** Native method shortcuts */ var ceil = Math.ceil, clearTimeout = context.clearTimeout, - concat = arrayRef.concat, floor = Math.floor, fnToString = Function.prototype.toString, getPrototypeOf = reNative.test(getPrototypeOf = Object.getPrototypeOf) && getPrototypeOf, @@ -2517,7 +2516,7 @@ if (isFunc) { callback = lodash.createCallback(callback, thisArg); } else { - var props = concat.apply(arrayRef, nativeSlice.call(arguments, 1)); + var props = basicFlatten(nativeSlice.call(arguments, 1)); } forIn(object, function(value, key, object) { if (isFunc @@ -2568,8 +2567,9 @@ * @memberOf _ * @category Objects * @param {Object} object The source object. - * @param {Array|Function|String} callback|[prop1, prop2, ...] The function called - * per iteration or properties to pick, either as individual arguments or arrays. + * @param {Array|Function|String} callback|[prop1, prop2, ...] The function + * called per iteration or property names to pick, specified as individual + * property names or arrays of property names. * @param {Mixed} [thisArg] The `this` binding of `callback`. * @returns {Object} Returns an object composed of the picked properties. * @example @@ -2586,7 +2586,7 @@ var result = {}; if (typeof callback != 'function') { var index = -1, - props = concat.apply(arrayRef, nativeSlice.call(arguments, 1)), + props = basicFlatten(nativeSlice.call(arguments, 1)), length = isObject(object) ? props.length : 0; while (++index < length) { @@ -2693,8 +2693,8 @@ * @memberOf _ * @category Collections * @param {Array|Object|String} collection The collection to iterate over. - * @param {Array|Number|String} [index1, index2, ...] The indexes of - * `collection` to retrieve, either as individual arguments or arrays. + * @param {Array|Number|String} [index1, index2, ...] The indexes of `collection` + * to retrieve, specified as individual indexes or arrays of indexes. * @returns {Array} Returns a new array of elements corresponding to the * provided indexes. * @example @@ -2707,7 +2707,7 @@ */ function at(collection) { var index = -1, - props = concat.apply(arrayRef, nativeSlice.call(arguments, 1)), + props = basicFlatten(nativeSlice.call(arguments, 1)), length = props.length, result = Array(length); @@ -3733,16 +3733,17 @@ } /** - * Creates an array of `array` elements not present in the other arrays - * using strict equality for comparisons, i.e. `===`. + * Creates an arrat with all occurrences of the passed values removed using + * using strict equality for comparisons, i.e. `===`. Values to exclude may + * be specified as individual arguments or as arrays. * * @static * @memberOf _ * @category Arrays * @param {Array} array The array to process. - * @param {Array} [array1, array2, ...] Arrays to check. - * @returns {Array} Returns a new array of `array` elements not present in the - * other arrays. + * @param {Array} [array1, array2, ...] The values to exclude, specified as + * individual values or arrays of values. + * @returns {Array} Returns a new filtered array. * @example * * _.difference([1, 2, 3, 4, 5], [5, 2, 10]); @@ -3752,7 +3753,7 @@ var index = -1, indexOf = getIndexOf(), length = array ? array.length : 0, - seen = concat.apply(arrayRef, nativeSlice.call(arguments, 1)), + seen = basicFlatten(nativeSlice.call(arguments, 1)), result = []; var isLarge = length >= largeArraySize && indexOf === basicIndexOf; @@ -4417,10 +4418,7 @@ * // => [1, 2, 3, 101, 10] */ function union(array) { - if (!array) { - arguments[0] = arrayRef; - } - return basicUniq(basicFlatten(arguments, true)); + return basicUniq(basicFlatten(compact(arguments), true)); } /** @@ -4469,14 +4467,14 @@ var uniq = overloadWrapper(basicUniq); /** - * Creates an array with all occurrences of the passed values removed using + * Creates an array excluding all occurrences of the passed values using * strict equality for comparisons, i.e. `===`. * * @static * @memberOf _ * @category Arrays * @param {Array} array The array to filter. - * @param {Mixed} [value1, value2, ...] Values to remove. + * @param {Mixed} [value1, value2, ...] Values to exclude. * @returns {Array} Returns a new filtered array. * @example * @@ -4618,7 +4616,8 @@ * @memberOf _ * @category Functions * @param {Object} object The object to bind and assign the bound methods to. - * @param {String} [methodName1, methodName2, ...] Method names on the object to bind. + * @param {String} [methodName1, methodName2, ...] The object method names to + * bind, specified as individual values or arrays of values. * @returns {Object} Returns `object`. * @example * @@ -4632,7 +4631,7 @@ * // => alerts 'clicked docs', when the button is clicked */ function bindAll(object) { - var funcs = arguments.length > 1 ? concat.apply(arrayRef, nativeSlice.call(arguments, 1)) : functions(object), + var funcs = arguments.length > 1 ? basicFlatten(nativeSlice.call(arguments, 1)) : functions(object), index = -1, length = funcs.length;