Ensure _.merge passes the right arguments to the callback when comparing objects. [closes #231]

Former-commit-id: 7c1ff861f753d3a2bdf62a753c94df2052d03d78
This commit is contained in:
John-David Dalton
2013-04-08 21:01:57 -07:00
parent 4a11a3559d
commit ad0c287053
7 changed files with 115 additions and 91 deletions

View File

@@ -2029,10 +2029,6 @@
}
}
if (!found) {
value = isArr
? (isArray(value) ? value : [])
: (isPlainObject(value) ? value : {});
var isShallow;
if (callback) {
result = callback(value, source);
@@ -2040,6 +2036,11 @@
value = result;
}
}
if (!isShallow) {
value = isArr
? (isArray(value) ? value : [])
: (isPlainObject(value) ? value : {});
}
// add `source` and associated `value` to the stack of traversed objects
stackA.push(source);
stackB.push(value);

View File

@@ -13,7 +13,7 @@ case I:return u(f.source,h.exec(f))}for(o||(o=[]),i||(i=[]),l=o.length;l--;)if(o
var l=e(n,t);if(typeof l!="undefined")return!!l}if(n===t)return 0!==n||1/n==1/t;var c=typeof n,p=typeof t;if(n===n&&(!n||"function"!=c&&"object"!=c)&&(!t||"function"!=p&&"object"!=p))return!1;if(null==n||null==t)return n===t;if(p=Yt.call(n),c=Yt.call(t),p==j&&(p=A),c==j&&(c=A),p!=c)return!1;switch(p){case x:case O:return+n==+t;case S:return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case I:case P:return n==Rt(t)}if(c=p==k,!c){if(Jt.call(n,"__wrapped__")||Jt.call(t,"__wrapped__"))return Z(n.__wrapped__||n,t.__wrapped__||t,e,r,u,o);
if(p!=A||!se.nodeClass&&(M(n)||M(t)))return!1;var p=!se.argsObject&&Q(n)?Bt:n.constructor,s=!se.argsObject&&Q(t)?Bt:t.constructor;if(p!=s&&(!nt(p)||!(p instanceof p&&nt(s)&&s instanceof s)))return!1}for(u||(u=[]),o||(o=[]),p=u.length;p--;)if(u[p]==n)return o[p]==t;var v=0,l=!0;if(u.push(n),o.push(t),c){if(p=n.length,v=t.length,l=v==n.length,!l&&!f)return l;for(;v--;)if(c=p,s=t[v],f)for(;c--&&!(l=Z(n[c],s,e,r,u,o)););else if(!(l=Z(n[v],s,e,r,u,o)))break;return l}return ke(t,function(t,a,i){return Jt.call(i,a)?(v++,l=Jt.call(n,a)&&Z(n[a],t,e,r,u,o)):void 0
}),l&&!f&&ke(n,function(n,t,e){return Jt.call(e,t)?l=-1<--v:void 0}),l}function nt(n){return typeof n=="function"}function tt(n){return n?$[typeof n]:!1}function et(n){return typeof n=="number"||Yt.call(n)==S}function rt(n){return typeof n=="string"||Yt.call(n)==P}function ut(n,t,e){var r=arguments,u=0,o=2;if(!tt(n))return n;if(e===i)var f=r[3],l=r[4],c=r[5];else l=[],c=[],typeof e!="number"&&(o=r.length),3<o&&"function"==typeof r[o-2]?f=a.createCallback(r[--o-1],r[o--],2):2<o&&"function"==typeof r[o-1]&&(f=r[--o]);
for(;++u<o;)(ye(r[u])?ct:xe)(r[u],function(t,e){var r,u,a=t,o=n[e];if(t&&((u=ye(t))||Oe(t))){for(a=l.length;a--;)if(r=l[a]==t){o=c[a];break}if(!r){var p,o=u?ye(o)?o:[]:Oe(o)?o:{};f&&(a=f(o,t),p=typeof a!="undefined")&&(o=a),l.push(t),c.push(o),p||(o=ut(o,t,i,f,l,c))}}else f&&(a=f(o,t),typeof a=="undefined"&&(a=t)),typeof a!="undefined"&&(o=a);n[e]=o});return n}function at(n){for(var t=-1,e=de(n),r=e.length,u=At(r);++t<r;)u[t]=n[e[t]];return u}function ot(n,t,e){var r=-1,u=n?n.length:0,a=!1;return e=(0>e?ue(0,u+e):e)||0,typeof u=="number"?a=-1<(rt(n)?n.indexOf(t,e):bt(n,t,e)):be(n,function(n){return++r<e?void 0:!(a=n===t)
for(;++u<o;)(ye(r[u])?ct:xe)(r[u],function(t,e){var r,u,a=t,o=n[e];if(t&&((u=ye(t))||Oe(t))){for(a=l.length;a--;)if(r=l[a]==t){o=c[a];break}if(!r){var p;f&&(a=f(o,t),p=typeof a!="undefined")&&(o=a),p||(o=u?ye(o)?o:[]:Oe(o)?o:{}),l.push(t),c.push(o),p||(o=ut(o,t,i,f,l,c))}}else f&&(a=f(o,t),typeof a=="undefined"&&(a=t)),typeof a!="undefined"&&(o=a);n[e]=o});return n}function at(n){for(var t=-1,e=de(n),r=e.length,u=At(r);++t<r;)u[t]=n[e[t]];return u}function ot(n,t,e){var r=-1,u=n?n.length:0,a=!1;return e=(0>e?ue(0,u+e):e)||0,typeof u=="number"?a=-1<(rt(n)?n.indexOf(t,e):bt(n,t,e)):be(n,function(n){return++r<e?void 0:!(a=n===t)
}),a}function it(n,t,e){var r=!0;if(t=a.createCallback(t,e),ye(n)){e=-1;for(var u=n.length;++e<u&&(r=!!t(n[e],e,n)););}else be(n,function(n,e,u){return r=!!t(n,e,u)});return r}function ft(n,t,e){var r=[];if(t=a.createCallback(t,e),ye(n)){e=-1;for(var u=n.length;++e<u;){var o=n[e];t(o,e,n)&&r.push(o)}}else be(n,function(n,e,u){t(n,e,u)&&r.push(n)});return r}function lt(n,t,e){if(t=a.createCallback(t,e),!ye(n)){var r;return be(n,function(n,e,u){return t(n,e,u)?(r=n,!1):void 0}),r}e=-1;for(var u=n.length;++e<u;){var o=n[e];
if(t(o,e,n))return o}}function ct(n,t,e){if(t&&typeof e=="undefined"&&ye(n)){e=-1;for(var r=n.length;++e<r&&!1!==t(n[e],e,n););}else be(n,t,e);return n}function pt(n,t,e){var r=-1,u=n?n.length:0,o=At(typeof u=="number"?u:0);if(t=a.createCallback(t,e),ye(n))for(;++r<u;)o[r]=t(n[r],r,n);else be(n,function(n,e,u){o[++r]=t(n,e,u)});return o}function st(n,t,e){var r=-1/0,u=r;if(!t&&ye(n)){e=-1;for(var o=n.length;++e<o;){var i=n[e];i>u&&(u=i)}}else t=!t&&rt(n)?R:a.createCallback(t,e),be(n,function(n,e,a){e=t(n,e,a),e>r&&(r=e,u=n)
});return u}function vt(n,t,e,r){var u=3>arguments.length;if(t=a.createCallback(t,r,4),ye(n)){var o=-1,i=n.length;for(u&&(e=n[++o]);++o<i;)e=t(e,n[o],o,n)}else be(n,function(n,r,a){e=u?(u=!1,n):t(e,n,r,a)});return e}function gt(n,t,e,r){var u=n,o=n?n.length:0,i=3>arguments.length;if(typeof o!="number")var f=de(n),o=f.length;else se.unindexedChars&&rt(n)&&(u=n.split(""));return t=a.createCallback(t,r,4),ct(n,function(n,r,a){r=f?f[--o]:--o,e=i?(i=!1,u[r]):t(e,u[r],r,a)}),e}function ht(n,t,e){var r;

9
dist/lodash.js vendored
View File

@@ -1820,10 +1820,6 @@
}
}
if (!found) {
value = isArr
? (isArray(value) ? value : [])
: (isPlainObject(value) ? value : {});
var isShallow;
if (callback) {
result = callback(value, source);
@@ -1831,6 +1827,11 @@
value = result;
}
}
if (!isShallow) {
value = isArr
? (isArray(value) ? value : [])
: (isPlainObject(value) ? value : {});
}
// add `source` and associated `value` to the stack of traversed objects
stackA.push(source);
stackB.push(value);

2
dist/lodash.min.js vendored
View File

@@ -11,7 +11,7 @@ if(typeof t=="function"&&(u=r,r=t,t=!1),typeof r=="function"){if(r=typeof u=="un
}),f}function L(n){var t=[];return ke(n,function(n,e){X(n)&&t.push(e)}),t.sort()}function Q(n){for(var t=-1,e=ye(n),r=e.length,u={};++t<r;){var a=e[t];u[n[a]]=a}return u}function W(n,t,e,r,u,i){var f=e===o;if(typeof e=="function"&&!f){e=a.createCallback(e,r,2);var c=e(n,t);if(typeof c!="undefined")return!!c}if(n===t)return 0!==n||1/n==1/t;var l=typeof n,p=typeof t;if(n===n&&(!n||"function"!=l&&"object"!=l)&&(!t||"function"!=p&&"object"!=p))return!1;if(null==n||null==t)return n===t;if(p=Wt.call(n),l=Wt.call(t),p==w&&(p=N),l==w&&(l=N),p!=l)return!1;
switch(p){case C:case x:return+n==+t;case O:return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case E:case I:return n==Ft(t)}if(l=p==j,!l){if(Ht.call(n,"__wrapped__")||Ht.call(t,"__wrapped__"))return W(n.__wrapped__||n,t.__wrapped__||t,e,r,u,i);if(p!=N)return!1;var p=n.constructor,s=t.constructor;if(p!=s&&(!X(p)||!(p instanceof p&&X(s)&&s instanceof s)))return!1}for(u||(u=[]),i||(i=[]),p=u.length;p--;)if(u[p]==n)return i[p]==t;var v=0,c=!0;if(u.push(n),i.push(t),l){if(p=n.length,v=t.length,c=v==n.length,!c&&!f)return c;
for(;v--;)if(l=p,s=t[v],f)for(;l--&&!(c=W(n[l],s,e,r,u,i)););else if(!(c=W(n[v],s,e,r,u,i)))break;return c}return ke(t,function(t,a,o){return Ht.call(o,a)?(v++,c=Ht.call(n,a)&&W(n[a],t,e,r,u,i)):void 0}),c&&!f&&ke(n,function(n,t,e){return Ht.call(e,t)?c=-1<--v:void 0}),c}function X(n){return typeof n=="function"}function Y(n){return n?A[typeof n]:!1}function Z(n){return typeof n=="number"||Wt.call(n)==O}function nt(n){return typeof n=="string"||Wt.call(n)==I}function tt(n,t,e){var r=arguments,u=0,i=2;
if(!Y(n))return n;if(e===o)var f=r[3],c=r[4],l=r[5];else c=[],l=[],typeof e!="number"&&(i=r.length),3<i&&"function"==typeof r[i-2]?f=a.createCallback(r[--i-1],r[i--],2):2<i&&"function"==typeof r[i-1]&&(f=r[--i]);for(;++u<i;)(ge(r[u])?ot:we)(r[u],function(t,e){var r,u,a=t,i=n[e];if(t&&((u=ge(t))||je(t))){for(a=c.length;a--;)if(r=c[a]==t){i=l[a];break}if(!r){var p,i=u?ge(i)?i:[]:je(i)?i:{};f&&(a=f(i,t),p=typeof a!="undefined")&&(i=a),c.push(t),l.push(i),p||(i=tt(i,t,o,f,c,l))}}else f&&(a=f(i,t),typeof a=="undefined"&&(a=t)),typeof a!="undefined"&&(i=a);
if(!Y(n))return n;if(e===o)var f=r[3],c=r[4],l=r[5];else c=[],l=[],typeof e!="number"&&(i=r.length),3<i&&"function"==typeof r[i-2]?f=a.createCallback(r[--i-1],r[i--],2):2<i&&"function"==typeof r[i-1]&&(f=r[--i]);for(;++u<i;)(ge(r[u])?ot:we)(r[u],function(t,e){var r,u,a=t,i=n[e];if(t&&((u=ge(t))||je(t))){for(a=c.length;a--;)if(r=c[a]==t){i=l[a];break}if(!r){var p;f&&(a=f(i,t),p=typeof a!="undefined")&&(i=a),p||(i=u?ge(i)?i:[]:je(i)?i:{}),c.push(t),l.push(i),p||(i=tt(i,t,o,f,c,l))}}else f&&(a=f(i,t),typeof a=="undefined"&&(a=t)),typeof a!="undefined"&&(i=a);
n[e]=i});return n}function et(n){for(var t=-1,e=ye(n),r=e.length,u=Nt(r);++t<r;)u[t]=n[e[t]];return u}function rt(n,t,e){var r=-1,u=n?n.length:0,a=!1;return e=(0>e?ee(0,u+e):e)||0,typeof u=="number"?a=-1<(nt(n)?n.indexOf(t,e):mt(n,t,e)):we(n,function(n){return++r<e?void 0:!(a=n===t)}),a}function ut(n,t,e){var r=!0;t=a.createCallback(t,e),e=-1;var u=n?n.length:0;if(typeof u=="number")for(;++e<u&&(r=!!t(n[e],e,n)););else we(n,function(n,e,u){return r=!!t(n,e,u)});return r}function at(n,t,e){var r=[];
t=a.createCallback(t,e),e=-1;var u=n?n.length:0;if(typeof u=="number")for(;++e<u;){var i=n[e];t(i,e,n)&&r.push(i)}else we(n,function(n,e,u){t(n,e,u)&&r.push(n)});return r}function it(n,t,e){t=a.createCallback(t,e),e=-1;var r=n?n.length:0;if(typeof r!="number"){var u;return we(n,function(n,e,r){return t(n,e,r)?(u=n,!1):void 0}),u}for(;++e<r;){var i=n[e];if(t(i,e,n))return i}}function ot(n,t,e){var r=-1,u=n?n.length:0;if(t=t&&typeof e=="undefined"?t:a.createCallback(t,e),typeof u=="number")for(;++r<u&&!1!==t(n[r],r,n););else we(n,t);
return n}function ft(n,t,e){var r=-1,u=n?n.length:0;if(t=a.createCallback(t,e),typeof u=="number")for(var i=Nt(u);++r<u;)i[r]=t(n[r],r,n);else i=[],we(n,function(n,e,u){i[++r]=t(n,e,u)});return i}function ct(n,t,e){var r=-1/0,u=r;if(!t&&ge(n)){e=-1;for(var i=n.length;++e<i;){var o=n[e];o>u&&(u=o)}}else t=!t&&nt(n)?F:a.createCallback(t,e),ot(n,function(n,e,a){e=t(n,e,a),e>r&&(r=e,u=n)});return u}function lt(n,t){var e=-1,r=n?n.length:0;if(typeof r=="number")for(var u=Nt(r);++e<r;)u[e]=n[e][t];return u||ft(n,t)