mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-01-31 07:17:50 +00:00
Ensure _.flow and _.flowRight works with _.first. [closes #1308]
This commit is contained in:
@@ -1205,7 +1205,7 @@
|
||||
takeCount = nativeMin(length, this.__takeCount__);
|
||||
|
||||
if (!isArr || arrLength < LARGE_ARRAY_SIZE || (arrLength == length && takeCount == length)) {
|
||||
return baseWrapperValue(isRight ? array.reverse() : array, this.__actions__);
|
||||
return baseWrapperValue((isRight && isArr) ? array.reverse() : array, this.__actions__);
|
||||
}
|
||||
var result = [];
|
||||
|
||||
@@ -3433,7 +3433,7 @@
|
||||
throw new TypeError(FUNC_ERROR_TEXT);
|
||||
}
|
||||
if (!wrapper && LodashWrapper.prototype.thru && getFuncName(func) == 'wrapper') {
|
||||
wrapper = new LodashWrapper([]);
|
||||
wrapper = new LodashWrapper([], true);
|
||||
}
|
||||
}
|
||||
index = wrapper ? -1 : length;
|
||||
@@ -12428,7 +12428,9 @@
|
||||
isLazy = useLazy = false;
|
||||
}
|
||||
var interceptor = function(value) {
|
||||
return lodashFunc.apply(undefined, arrayPush([value], args));
|
||||
return (retUnwrapped && chainAll)
|
||||
? lodashFunc(value, 1)[0]
|
||||
: lodashFunc.apply(undefined, arrayPush([value], args));
|
||||
};
|
||||
|
||||
var action = { 'func': thru, 'args': [interceptor], 'thisArg': undefined },
|
||||
@@ -12442,12 +12444,10 @@
|
||||
}
|
||||
return lodashFunc.call(undefined, this.value())[0];
|
||||
}
|
||||
if (useLazy) {
|
||||
if (!retUnwrapped && useLazy) {
|
||||
value = onlyLazy ? value : new LazyWrapper(this);
|
||||
var result = func.apply(value, args);
|
||||
if (!retUnwrapped) {
|
||||
result.__actions__.push(action);
|
||||
}
|
||||
result.__actions__.push(action);
|
||||
return new LodashWrapper(result, chainAll);
|
||||
}
|
||||
return this.thru(interceptor);
|
||||
|
||||
30
test/test.js
30
test/test.js
@@ -2248,6 +2248,16 @@
|
||||
notStrictEqual(combined, _.identity);
|
||||
});
|
||||
|
||||
test('`_.' + methodName + '` should work with a curried function and `_.first`', 1, function() {
|
||||
var curried = _.curry(_.identity);
|
||||
|
||||
var combined = isFlow
|
||||
? func(_.first, curried)
|
||||
: func(curried, _.first);
|
||||
|
||||
strictEqual(combined([1]), 1);
|
||||
});
|
||||
|
||||
test('`_.' + methodName + '` should support shortcut fusion', 12, function() {
|
||||
var filterCount,
|
||||
mapCount;
|
||||
@@ -4796,6 +4806,16 @@
|
||||
}
|
||||
});
|
||||
|
||||
test('should not execute immediately when explicitly chaining', 1, function() {
|
||||
if (!isNpm) {
|
||||
var wrapped = _(array).chain().first();
|
||||
strictEqual(wrapped.__wrapped__, array);
|
||||
}
|
||||
else {
|
||||
skipTest();
|
||||
}
|
||||
});
|
||||
|
||||
test('should work in a lazy chain sequence', 1, function() {
|
||||
if (!isNpm) {
|
||||
var array = _.range(1, LARGE_ARRAY_SIZE + 1);
|
||||
@@ -9261,6 +9281,16 @@
|
||||
}
|
||||
});
|
||||
|
||||
test('should not execute immediately when explicitly chaining', 1, function() {
|
||||
if (!isNpm) {
|
||||
var wrapped = _(array).chain().last();
|
||||
strictEqual(wrapped.__wrapped__, array);
|
||||
}
|
||||
else {
|
||||
skipTest();
|
||||
}
|
||||
});
|
||||
|
||||
test('should work in a lazy chain sequence', 1, function() {
|
||||
if (!isNpm) {
|
||||
var array = _.range(1, LARGE_ARRAY_SIZE + 1),
|
||||
|
||||
Reference in New Issue
Block a user