Revert "Merge pull request #34 from substantial/default-to-array"
This reverts commit12bf952d64
, reversing changes made to7a35404ae1
.
This commit is contained in:
parent
43d34e0a5a
commit
485bde7b9b
@ -1,8 +1,10 @@
|
|||||||
import wrap from './wrap';
|
import wrap from './wrap';
|
||||||
import isEmpty from './util/isEmpty';
|
|
||||||
import defaultObject from './util/defaultObject';
|
|
||||||
import isPlainObject from 'lodash/lang/isPlainObject';
|
import isPlainObject from 'lodash/lang/isPlainObject';
|
||||||
|
|
||||||
|
function isEmpty(object) {
|
||||||
|
return !Object.keys(object).length;
|
||||||
|
}
|
||||||
|
|
||||||
function reduce(object, callback, initialValue) {
|
function reduce(object, callback, initialValue) {
|
||||||
return Object.keys(object).reduce((acc, key) => {
|
return Object.keys(object).reduce((acc, key) => {
|
||||||
return callback(acc, object[key], key);
|
return callback(acc, object[key], key);
|
||||||
@ -63,7 +65,9 @@ function update(updates, object, ...args) {
|
|||||||
return updates;
|
return updates;
|
||||||
}
|
}
|
||||||
|
|
||||||
const defaultedObject = defaultObject(object, updates);
|
const defaultedObject = (typeof object === 'undefined' || object === null) ?
|
||||||
|
{} :
|
||||||
|
object;
|
||||||
|
|
||||||
const resolvedUpdates = resolveUpdates(updates, defaultedObject);
|
const resolvedUpdates = resolveUpdates(updates, defaultedObject);
|
||||||
|
|
||||||
|
@ -1,35 +0,0 @@
|
|||||||
import isEmpty from './isEmpty';
|
|
||||||
|
|
||||||
function isInt(value) {
|
|
||||||
if (isNaN(value)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
const x = parseFloat(value);
|
|
||||||
return (x | 0) === x;
|
|
||||||
}
|
|
||||||
|
|
||||||
function isArrayUpdate(updates) {
|
|
||||||
for (const updateKey of Object.keys(updates)) {
|
|
||||||
if (!isInt(updateKey)) { return false; }
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function arrayOrObject(updates) {
|
|
||||||
if (!isEmpty(updates) && isArrayUpdate(updates)) {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
|
|
||||||
function defaultObject(object, updates) {
|
|
||||||
if (typeof object === 'undefined' || object === null) {
|
|
||||||
return arrayOrObject(updates);
|
|
||||||
}
|
|
||||||
|
|
||||||
return object;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default defaultObject;
|
|
@ -1,5 +0,0 @@
|
|||||||
function isEmpty(object) {
|
|
||||||
return !Object.keys(object).length;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default isEmpty;
|
|
@ -27,12 +27,6 @@ describe('u.updateIn', () => {
|
|||||||
expect(result).to.eql({ a: [0, 3, 0] });
|
expect(result).to.eql({ a: [0, 3, 0] });
|
||||||
});
|
});
|
||||||
|
|
||||||
it('can create array if all keys are numbers', () => {
|
|
||||||
const result = u.updateIn('a.0', 3, null);
|
|
||||||
|
|
||||||
expect(result).to.eql({ a: [3] });
|
|
||||||
});
|
|
||||||
|
|
||||||
it('can be partially applied', () => {
|
it('can be partially applied', () => {
|
||||||
const object = { a: { b: 0 } };
|
const object = { a: { b: 0 } };
|
||||||
const result = u.updateIn('a.b')(3)(object);
|
const result = u.updateIn('a.b')(3)(object);
|
||||||
|
@ -42,18 +42,6 @@ describe('updeep', () => {
|
|||||||
expect(u(null, {})).to.be.null;
|
expect(u(null, {})).to.be.null;
|
||||||
});
|
});
|
||||||
|
|
||||||
it('can create array if all keys are numbers', () => {
|
|
||||||
const result = u({ 0: 'hi', '1': 'world' }, null);
|
|
||||||
|
|
||||||
expect(result).to.eql(['hi', 'world']);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('does not create array if any key is not number', () => {
|
|
||||||
const result = u({ 0: 'hi', '1a': 'world' }, null);
|
|
||||||
|
|
||||||
expect(result).to.eql({ 0: 'hi', '1a': 'world' });
|
|
||||||
});
|
|
||||||
|
|
||||||
it('can add an element to an array', () => {
|
it('can add an element to an array', () => {
|
||||||
const object = [];
|
const object = [];
|
||||||
const result = u({ 0: 3 }, object);
|
const result = u({ 0: 3 }, object);
|
||||||
|
Loading…
Reference in New Issue
Block a user