Add fp.assignAll, fp.assignInAll, fp.defaultsAll, fp.defaultsDeepAll, and fp.mergeAll.

This commit is contained in:
John-David Dalton
2016-06-01 00:02:23 -07:00
parent 87e8a4290e
commit 4880f9923c
2 changed files with 36 additions and 5 deletions

View File

@@ -7,6 +7,7 @@ exports.aliasToReal = {
'entries': 'toPairs', 'entries': 'toPairs',
'entriesIn': 'toPairsIn', 'entriesIn': 'toPairsIn',
'extend': 'assignIn', 'extend': 'assignIn',
'extendAll': 'assignInAll',
'extendWith': 'assignInWith', 'extendWith': 'assignInWith',
'first': 'head', 'first': 'head',
@@ -59,11 +60,12 @@ exports.aliasToReal = {
/** Used to map ary to method names. */ /** Used to map ary to method names. */
exports.aryMethod = { exports.aryMethod = {
'1': [ '1': [
'attempt', 'castArray', 'ceil', 'create', 'curry', 'curryRight', 'floor', 'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',
'flow', 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',
'methodOf', 'mixin', 'over', 'overEvery', 'overSome', 'rest', 'reverse', 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method',
'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart', 'mergeAll', 'methodOf', 'mixin', 'over', 'overEvery', 'overSome', 'rest',
'uniqueId', 'words' 'reverse', 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd',
'trimStart', 'uniqueId', 'words'
], ],
'2': [ '2': [
'add', 'after', 'ary', 'assign', 'assignIn', 'at', 'before', 'bind', 'bindAll', 'add', 'after', 'ary', 'assign', 'assignIn', 'at', 'before', 'bind', 'bindAll',
@@ -185,8 +187,13 @@ exports.methodRearg = {
/** Used to map method names to spread configs. */ /** Used to map method names to spread configs. */
exports.methodSpread = { exports.methodSpread = {
'assignAll': 0,
'assignInAll': 0,
'defaultsAll': 0,
'defaultsDeepAll': 0,
'invokeArgs': 2, 'invokeArgs': 2,
'invokeArgsMap': 2, 'invokeArgsMap': 2,
'mergeAll': 0,
'partial': 1, 'partial': 1,
'partialRight': 1, 'partialRight': 1,
'without': 1 'without': 1
@@ -206,12 +213,17 @@ exports.mutate = {
}, },
'object': { 'object': {
'assign': true, 'assign': true,
'assignAll': true,
'assignIn': true, 'assignIn': true,
'assignInAll': true,
'assignInWith': true, 'assignInWith': true,
'assignWith': true, 'assignWith': true,
'defaults': true, 'defaults': true,
'defaultsAll': true,
'defaultsDeep': true, 'defaultsDeep': true,
'defaultsDeepAll': true,
'merge': true, 'merge': true,
'mergeAll': true,
'mergeWith': true 'mergeWith': true
}, },
'set': { 'set': {
@@ -252,8 +264,12 @@ exports.realToAlias = (function() {
/** Used to map method names to other names. */ /** Used to map method names to other names. */
exports.remap = { exports.remap = {
'assignAll': 'assign',
'assignInAll': 'assignIn',
'curryN': 'curry', 'curryN': 'curry',
'curryRightN': 'curryRight', 'curryRightN': 'curryRight',
'defaultsAll': 'defaults',
'defaultsDeepAll': 'defaultsDeep',
'findFrom': 'find', 'findFrom': 'find',
'findIndexFrom': 'findIndex', 'findIndexFrom': 'findIndex',
'findLastFrom': 'findLast', 'findLastFrom': 'findLast',
@@ -264,6 +280,7 @@ exports.remap = {
'invokeArgs': 'invoke', 'invokeArgs': 'invoke',
'invokeArgsMap': 'invokeMap', 'invokeArgsMap': 'invokeMap',
'lastIndexOfFrom': 'lastIndexOf', 'lastIndexOfFrom': 'lastIndexOf',
'mergeAll': 'merge',
'padChars': 'pad', 'padChars': 'pad',
'padCharsEnd': 'padEnd', 'padCharsEnd': 'padEnd',
'padCharsStart': 'padStart', 'padCharsStart': 'padStart',

View File

@@ -728,6 +728,20 @@
}); });
}); });
_.each(['assignAll', 'assignInAll', 'defaultsAll', 'defaultsDeepAll', 'mergeAll'], function(methodName) {
var func = fp[methodName];
QUnit.test('`fp.' + methodName + '` should not mutate values', function(assert) {
assert.expect(2);
var objects = [{ 'a': 1 }, { 'b': 2 }],
actual = func(objects);
assert.deepEqual(objects[0], { 'a': 1 });
assert.deepEqual(actual, { 'a': 1, 'b': 2 });
});
});
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
QUnit.module('assignWith methods'); QUnit.module('assignWith methods');