Ensure _.where works correctly for nested properties and give indicator arguments more meaningful names.

Former-commit-id: c35e2817125cd852a66066ccdef44bcc40c93e61
This commit is contained in:
John-David Dalton
2013-01-26 23:47:47 -08:00
parent 17fc3c2317
commit 23c3ba6ad7
7 changed files with 204 additions and 191 deletions

View File

@@ -5,16 +5,17 @@
* Underscore.js 1.4.3 underscorejs.org/LICENSE
*/
;(function(n,t){function r(n,t){var r;if(n&&St[typeof n])for(r in t||(t=P),n)if(t(n[r],r,n)===W)break}function e(n,t,r){if(n){t=t&&typeof r=="undefined"?t:i(t,r);var e=n.length;if(r=-1,typeof e=="number")for(;++r<e&&t(n[r],r,n)!==W;);else for(r in n)if(it.call(n,r)&&t(n[r],r,n)===W)break}}function u(n){return n&&typeof n=="object"&&n.__wrapped__?n:this instanceof u?(this.__wrapped__=n,void 0):new u(n)}function o(n,t){var r=n.b,e=t.b;if(n=n.a,t=t.a,n!==t){if(n>t||typeof n=="undefined")return 1;if(n<t||typeof t=="undefined")return-1
}return r<e?-1:1}function i(n,t,r){if(!n)return P;var e=typeof n;if("function"!=e){if("object"!=e)return function(t){return t[n]};var u=Ft(n);return function(t){for(var r=u.length,e=H;r--&&(e=m(t[u[r]],n[u[r]])););return e}}return typeof t!="undefined"?r?function(r,e,u,o){return n.call(t,r,e,u,o)}:function(r,e,u){return n.call(t,r,e,u)}:n}function a(n){return"\\"+kt[n]}function f(n){return Rt[n]}function c(){}function l(n,t,r){t||(t=0),typeof r=="undefined"&&(r=n?n.length:0);var e=-1;r=r-t||0;for(var u=Array(0>r?0:r);++e<r;)u[e]=n[t+e];
}return r<e?-1:1}function i(n,t,r){if(!n)return P;var e=typeof n;if("function"!=e){if("object"!=e)return function(t){return t[n]};var u=Ft(n);return function(t){for(var r=u.length,e=H;r--&&(e=m(t[u[r]],n[u[r]],W)););return e}}return typeof t!="undefined"?r?function(r,e,u,o){return n.call(t,r,e,u,o)}:function(r,e,u){return n.call(t,r,e,u)}:n}function a(n){return"\\"+kt[n]}function f(n){return Rt[n]}function c(){}function l(n,t,r){t||(t=0),typeof r=="undefined"&&(r=n?n.length:0);var e=-1;r=r-t||0;for(var u=Array(0>r?0:r);++e<r;)u[e]=n[t+e];
return u}function p(n){return Tt[n]}function s(n){var t,r=[],e=function(n,t){r.push(t)};if(n&&St[typeof n])for(t in e||(e=P),n)if(it.call(n,t)&&e(n[t],t,n)===W)break;return r}function v(n){if(!n)return n;for(var t=1,r=arguments.length;t<r;t++){var e=arguments[t];if(e)for(var u in e)n[u]=e[u]}return n}function g(n){if(!n)return n;for(var t=1,r=arguments.length;t<r;t++){var e=arguments[t];if(e)for(var u in e)n[u]==G&&(n[u]=e[u])}return n}function h(n){var t=[];return r(n,function(n,r){_(n)&&t.push(r)
}),t.sort()}function y(n){for(var t=-1,r=Ft(n),e=r.length,u={};++t<e;){var o=r[t];u[n[o]]=o}return u}function m(n,t,e,u){if(n===t)return 0!==n||1/n==1/t;if(n==G||t==G)return H;var o=ft.call(n),i=ft.call(t);if(o!=i)return H;switch(o){case _t:case dt:return+n==+t;case bt:return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case wt:case At:return n==t+""}if(i=o==mt,!i){if(n.__wrapped__||t.__wrapped__)return m(n.__wrapped__||n,t.__wrapped__||t);if(o!=jt)return H;var o=n.constructor,a=t.constructor;if(o!=a&&(!_(o)||!(o instanceof o&&_(a)&&a instanceof a)))return H
}for(e||(e=[]),u||(u=[]),o=e.length;o--;)if(e[o]==n)return u[o]==t;var f=V,c=0;if(e.push(n),u.push(t),i){if(c=n.length,f=c==t.length)for(;c--&&(f=m(n[c],t[c],e,u)););return f}return r(n,function(n,r,o){return it.call(o,r)?(c++,!(f=it.call(t,r)&&m(n,t[r],e,u))&&W):void 0}),f&&r(t,function(n,t,r){return it.call(r,t)?!(f=-1<--c)&&W:void 0}),f}function _(n){return typeof n=="function"}function d(n){return n?St[typeof n]:H}function b(n){return typeof n=="number"||ft.call(n)==bt}function j(n){return typeof n=="string"||ft.call(n)==At
}function w(n){for(var t=-1,r=Ft(n),e=r.length,u=Array(e);++t<e;)u[t]=n[r[t]];return u}function A(n,t){var r=H;return typeof(n?n.length:0)=="number"?r=-1<M(n,t):e(n,function(n){return(r=n===t)&&W}),r}function x(n,t,r){var u=V;if(t=i(t,r),Nt(n)){r=-1;for(var o=n.length;++r<o&&(u=!!t(n[r],r,n)););}else e(n,function(n,r,e){return!(u=!!t(n,r,e))&&W});return u}function E(n,t,r){var u=[];if(t=i(t,r),Nt(n)){r=-1;for(var o=n.length;++r<o;){var a=n[r];t(a,r,n)&&u.push(a)}}else e(n,function(n,r,e){t(n,r,e)&&u.push(n)
});return u}function O(n,t,r){var e;return t=i(t,r),S(n,function(n,r,u){return t(n,r,u)?(e=n,W):void 0}),e}function S(n,t,r){if(t&&typeof r=="undefined"&&Nt(n)){r=-1;for(var u=n.length;++r<u&&t(n[r],r,n)!==W;);}else e(n,t,r)}function k(n,t,r){var u=-1,o=n?n.length:0,a=Array(typeof o=="number"?o:0);if(t=i(t,r),Nt(n))for(;++u<o;)a[u]=t(n[u],u,n);else e(n,function(n,r,e){a[++u]=t(n,r,e)});return a}function N(n,t,r){var u=-1/0,o=u;if(!t&&Nt(n)){r=-1;for(var a=n.length;++r<a;){var f=n[r];f>o&&(o=f)}}else t=i(t,r),e(n,function(n,r,e){r=t(n,r,e),r>u&&(u=r,o=n)
});return o}function F(n,t){return k(n,t+"")}function R(n,t,r,u){var o=3>arguments.length;if(t=i(t,u,W),Nt(n)){var a=-1,f=n.length;for(o&&(r=n[++a]);++a<f;)r=t(r,n[a],a,n)}else e(n,function(n,e,u){r=o?(o=H,n):t(r,n,e,u)});return r}function T(n,t,r,e){var u=n?n.length:0,o=3>arguments.length;if(typeof u!="number")var a=Ft(n),u=a.length;return t=i(t,e,W),S(n,function(e,i,f){i=a?a[--u]:--u,r=o?(o=H,n[i]):t(r,n[i],i,f)}),r}function q(n,t,r){var u;if(t=i(t,r),Nt(n)){r=-1;for(var o=n.length;++r<o&&!(u=t(n[r],r,n)););}else e(n,function(n,r,e){return(u=t(n,r,e))&&W
});return!!u}function B(n,t,r){if(n){var e=0,u=n.length;if(typeof t=="function"){var o=-1;for(t=i(t,r);++o<u&&t(n[o],o,n);)e++}else if(e=t,e==G||r)return n[0];return l(n,0,ht(gt(0,e),u))}}function D(n,t){for(var r=-1,e=n?n.length:0,u=[];++r<e;){var o=n[r];Nt(o)?at.apply(u,t?o:D(o)):u.push(o)}return u}function M(n,t,r){var e=-1,u=n?n.length:0;if(typeof r=="number")e=(0>r?gt(0,u+r):r||0)-1;else if(r)return e=I(n,t),n[e]===t?e:-1;for(;++e<u;)if(n[e]===t)return e;return-1}function $(n,t,r){if(typeof t=="function"){var e=0,u=-1,o=n?n.length:0;
for(t=i(t,r);++u<o&&t(n[u],u,n);)e++}else e=t==G||r?1:gt(0,t);return l(n,e)}function I(n,t,r,e){var u=0,o=n?n.length:u;for(r=r?i(r,e):P,t=r(t);u<o;)e=u+o>>>1,r(n[e])<t?u=e+1:o=e;return u}function z(n,t,r,e){var u=-1,o=n?n.length:0,a=[],f=a;for(typeof t=="function"&&(e=r,r=t,t=H),r&&(f=[],r=i(r,e));++u<o;){e=n[u];var c=r?r(e,u,n):e;(t?!u||f[f.length-1]!==c:0>M(f,c))&&(r&&f.push(c),a.push(e))}return a}function C(n,t){var r;if(xt||ct&&2<arguments.length)r=ct.call.apply(ct,arguments);else{var e=n,u=t,o=l(arguments,2),i=function(){var n=arguments,t=u;
return o.length&&(n=n.length?o.concat(l(n)):o),this instanceof i?(c.prototype=e.prototype,t=new c,c.prototype=G,n=e.apply(t,n),d(n)?n:t):e.apply(t,n)};r=i}return r}function P(n){return n}function U(n){S(h(n),function(t){var r=u[t]=n[t];u.prototype[t]=function(){var n=[this.__wrapped__];return at.apply(n,arguments),n=r.apply(u,n),this.__chain__&&(n=new u(n),n.__chain__=V),n}})}var V=!0,G=null,H=!1,J=typeof exports=="object"&&exports,K=typeof global=="object"&&global;K.global===K&&(n=K);var L=[],K={},Q=0,W=K,X=n._,Y=/&(?:amp|lt|gt|quot|#x27);/g,Z=RegExp("^"+(K.valueOf+"").replace(/[.*+?^=!:${}()|[\]\/\\]/g,"\\$&").replace(/valueOf|for [^\]]+/g,".+?")+"$"),nt=/($^)/,tt=/[&<>"']/g,rt=/['\n\r\t\u2028\u2029\\]/g,et=Math.ceil,ut=L.concat,ot=Math.floor,it=K.hasOwnProperty,at=L.push,ft=K.toString,ct=Z.test(ct=l.bind)&&ct,lt=Z.test(lt=Array.isArray)&&lt,pt=n.isFinite,st=n.isNaN,vt=Z.test(vt=Object.keys)&&vt,gt=Math.max,ht=Math.min,yt=Math.random,mt="[object Array]",_t="[object Boolean]",dt="[object Date]",bt="[object Number]",jt="[object Object]",wt="[object RegExp]",At="[object String]",K=!!n.attachEvent,K=ct&&!/\n|true/.test(ct+K),xt=ct&&!K,Et=(Et={0:1,length:1},L.splice.call(Et,0,1),Et[0]),Ot=arguments.constructor==Object,St={"boolean":H,"function":V,object:V,number:H,string:H,undefined:H},kt={"\\":"\\","'":"'","\n":"n","\r":"r"," ":"t","\u2028":"u2028","\u2029":"u2029"};
}),t.sort()}function y(n){for(var t=-1,r=Ft(n),e=r.length,u={};++t<e;){var o=r[t];u[n[o]]=o}return u}function m(n,t,e,u,o){if(n===t)return 0!==n||1/n==1/t;var i=typeof n,a=typeof t;if(n===n&&(!n||"function"!=i&&"object"!=i)&&(!t||"function"!=a&&"object"!=a))return H;if(a=ft.call(n),i=ft.call(t),a!=i)return H;switch(a){case _t:case dt:return+n==+t;case bt:return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case wt:case At:return n==t+""}if(i=a==mt,!i){if(n.__wrapped__||t.__wrapped__)return m(n.__wrapped__||n,t.__wrapped__||t,e);
if(a!=jt)return H;var a=n.constructor,f=t.constructor;if(a!=f&&(!_(a)||!(a instanceof a&&_(f)&&f instanceof f)))return H}for(u||(u=[]),o||(o=[]),a=u.length;a--;)if(u[a]==n)return o[a]==t;var c=V,l=0;if(u.push(n),o.push(t),i){if(l=t.length,c=e==W||l==n.length)for(;l--&&(c=m(n[l],t[l],e,u,o)););return c}return r(t,function(t,r,i){return it.call(i,r)?(l++,!(c=it.call(n,r)&&m(n[r],t,e,u,o))&&W):void 0}),c&&e!=W&&r(n,function(n,t,r){return it.call(r,t)?!(c=-1<--l)&&W:void 0}),c}function _(n){return typeof n=="function"
}function d(n){return n?St[typeof n]:H}function b(n){return typeof n=="number"||ft.call(n)==bt}function j(n){return typeof n=="string"||ft.call(n)==At}function w(n){for(var t=-1,r=Ft(n),e=r.length,u=Array(e);++t<e;)u[t]=n[r[t]];return u}function A(n,t){var r=H;return typeof(n?n.length:0)=="number"?r=-1<M(n,t):e(n,function(n){return(r=n===t)&&W}),r}function x(n,t,r){var u=V;if(t=i(t,r),Nt(n)){r=-1;for(var o=n.length;++r<o&&(u=!!t(n[r],r,n)););}else e(n,function(n,r,e){return!(u=!!t(n,r,e))&&W});return u
}function E(n,t,r){var u=[];if(t=i(t,r),Nt(n)){r=-1;for(var o=n.length;++r<o;){var a=n[r];t(a,r,n)&&u.push(a)}}else e(n,function(n,r,e){t(n,r,e)&&u.push(n)});return u}function O(n,t,r){var e;return t=i(t,r),S(n,function(n,r,u){return t(n,r,u)?(e=n,W):void 0}),e}function S(n,t,r){if(t&&typeof r=="undefined"&&Nt(n)){r=-1;for(var u=n.length;++r<u&&t(n[r],r,n)!==W;);}else e(n,t,r)}function k(n,t,r){var u=-1,o=n?n.length:0,a=Array(typeof o=="number"?o:0);if(t=i(t,r),Nt(n))for(;++u<o;)a[u]=t(n[u],u,n);
else e(n,function(n,r,e){a[++u]=t(n,r,e)});return a}function N(n,t,r){var u=-1/0,o=u;if(!t&&Nt(n)){r=-1;for(var a=n.length;++r<a;){var f=n[r];f>o&&(o=f)}}else t=i(t,r),e(n,function(n,r,e){r=t(n,r,e),r>u&&(u=r,o=n)});return o}function F(n,t){return k(n,t+"")}function R(n,t,r,u){var o=3>arguments.length;if(t=i(t,u,W),Nt(n)){var a=-1,f=n.length;for(o&&(r=n[++a]);++a<f;)r=t(r,n[a],a,n)}else e(n,function(n,e,u){r=o?(o=H,n):t(r,n,e,u)});return r}function T(n,t,r,e){var u=n?n.length:0,o=3>arguments.length;
if(typeof u!="number")var a=Ft(n),u=a.length;return t=i(t,e,W),S(n,function(e,i,f){i=a?a[--u]:--u,r=o?(o=H,n[i]):t(r,n[i],i,f)}),r}function q(n,t,r){var u;if(t=i(t,r),Nt(n)){r=-1;for(var o=n.length;++r<o&&!(u=t(n[r],r,n)););}else e(n,function(n,r,e){return(u=t(n,r,e))&&W});return!!u}function B(n,t,r){if(n){var e=0,u=n.length;if(typeof t=="function"){var o=-1;for(t=i(t,r);++o<u&&t(n[o],o,n);)e++}else if(e=t,e==G||r)return n[0];return l(n,0,ht(gt(0,e),u))}}function D(n,t){for(var r=-1,e=n?n.length:0,u=[];++r<e;){var o=n[r];
Nt(o)?at.apply(u,t?o:D(o)):u.push(o)}return u}function M(n,t,r){var e=-1,u=n?n.length:0;if(typeof r=="number")e=(0>r?gt(0,u+r):r||0)-1;else if(r)return e=I(n,t),n[e]===t?e:-1;for(;++e<u;)if(n[e]===t)return e;return-1}function $(n,t,r){if(typeof t=="function"){var e=0,u=-1,o=n?n.length:0;for(t=i(t,r);++u<o&&t(n[u],u,n);)e++}else e=t==G||r?1:gt(0,t);return l(n,e)}function I(n,t,r,e){var u=0,o=n?n.length:u;for(r=r?i(r,e):P,t=r(t);u<o;)e=u+o>>>1,r(n[e])<t?u=e+1:o=e;return u}function z(n,t,r,e){var u=-1,o=n?n.length:0,a=[],f=a;
for(typeof t=="function"&&(e=r,r=t,t=H),r&&(f=[],r=i(r,e));++u<o;){e=n[u];var c=r?r(e,u,n):e;(t?!u||f[f.length-1]!==c:0>M(f,c))&&(r&&f.push(c),a.push(e))}return a}function C(n,t){var r;if(xt||ct&&2<arguments.length)r=ct.call.apply(ct,arguments);else{var e=n,u=t,o=l(arguments,2),i=function(){var n=arguments,t=u;return o.length&&(n=n.length?o.concat(l(n)):o),this instanceof i?(c.prototype=e.prototype,t=new c,c.prototype=G,n=e.apply(t,n),d(n)?n:t):e.apply(t,n)};r=i}return r}function P(n){return n}function U(n){S(h(n),function(t){var r=u[t]=n[t];
u.prototype[t]=function(){var n=[this.__wrapped__];return at.apply(n,arguments),n=r.apply(u,n),this.__chain__&&(n=new u(n),n.__chain__=V),n}})}var V=!0,G=null,H=!1,J=typeof exports=="object"&&exports,K=typeof global=="object"&&global;K.global===K&&(n=K);var L=[],K={},Q=0,W=K,X=n._,Y=/&(?:amp|lt|gt|quot|#x27);/g,Z=RegExp("^"+(K.valueOf+"").replace(/[.*+?^=!:${}()|[\]\/\\]/g,"\\$&").replace(/valueOf|for [^\]]+/g,".+?")+"$"),nt=/($^)/,tt=/[&<>"']/g,rt=/['\n\r\t\u2028\u2029\\]/g,et=Math.ceil,ut=L.concat,ot=Math.floor,it=K.hasOwnProperty,at=L.push,ft=K.toString,ct=Z.test(ct=l.bind)&&ct,lt=Z.test(lt=Array.isArray)&&lt,pt=n.isFinite,st=n.isNaN,vt=Z.test(vt=Object.keys)&&vt,gt=Math.max,ht=Math.min,yt=Math.random,mt="[object Array]",_t="[object Boolean]",dt="[object Date]",bt="[object Number]",jt="[object Object]",wt="[object RegExp]",At="[object String]",K=!!n.attachEvent,K=ct&&!/\n|true/.test(ct+K),xt=ct&&!K,Et=(Et={0:1,length:1},L.splice.call(Et,0,1),Et[0]),Ot=arguments.constructor==Object,St={"boolean":H,"function":V,object:V,number:H,string:H,undefined:H},kt={"\\":"\\","'":"'","\n":"n","\r":"r"," ":"t","\u2028":"u2028","\u2029":"u2029"};
u.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""},u.isArguments=function(n){return"[object Arguments]"==ft.call(n)},u.isArguments(arguments)||(u.isArguments=function(n){return n?it.call(n,"callee"):H});var Nt=lt||function(n){return Ot&&n instanceof Array||ft.call(n)==mt},Ft=vt?function(n){return d(n)?vt(n):[]}:s,Rt={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;"},Tt=y(Rt);_(/x/)&&(_=function(n){return n instanceof Function||"[object Function]"==ft.call(n)
}),u.after=function(n,t){return 1>n?t():function(){return 1>--n?t.apply(this,arguments):void 0}},u.bind=C,u.bindAll=function(n){for(var t=ut.apply(L,arguments),r=1<t.length?0:(t=h(n),-1),e=t.length;++r<e;){var u=t[r];n[u]=C(n[u],n)}return n},u.compact=function(n){for(var t=-1,r=n?n.length:0,e=[];++t<r;){var u=n[t];u&&e.push(u)}return e},u.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length;r--;)t=[n[r].apply(this,t)];return t[0]}},u.countBy=function(n,t,r){var e={};
return t=i(t,r),S(n,function(n,r,u){r=t(n,r,u)+"",it.call(e,r)?e[r]++:e[r]=1}),e},u.debounce=function(n,t,r){function e(){a=G,r||(o=n.apply(i,u))}var u,o,i,a;return function(){var f=r&&!a;return u=arguments,i=this,clearTimeout(a),a=setTimeout(e,t),f&&(o=n.apply(i,u)),o}},u.defaults=g,u.defer=function(n){var r=l(arguments,1);return setTimeout(function(){n.apply(t,r)},1)},u.delay=function(n,r){var e=l(arguments,2);return setTimeout(function(){n.apply(t,e)},r)},u.difference=function(n){for(var t=-1,r=n.length,e=ut.apply(L,arguments),u=[];++t<r;){var o=n[t];