parent
5b58b8cfc8
commit
287c4fefad
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
## [unreleased]
|
## [unreleased]
|
||||||
* Add `u._` placeholder for curried functions.
|
* Add `u._` placeholder for curried functions.
|
||||||
|
* Add `u.constant` for replacing an object outright. (https://github.com/substantial/updeep/issues/10)
|
||||||
* Fix handling null differently than undefined. `u` and friends will now coerce null to an object if there are updates for it. (https://github.com/substantial/updeep/issues/20)
|
* Fix handling null differently than undefined. `u` and friends will now coerce null to an object if there are updates for it. (https://github.com/substantial/updeep/issues/20)
|
||||||
|
|
||||||
## [0.6.0]
|
## [0.6.0]
|
||||||
|
29
README.md
29
README.md
@ -200,6 +200,35 @@ var result = u({ pet: u.updateIn(['bunny', 'age'], 3) }, { pet: { bunny: { age:
|
|||||||
expect(result).toEqual({ pet: { bunny: { age: 3 } } });
|
expect(result).toEqual({ pet: { bunny: { age: 3 } } });
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### `u.constant(object)`
|
||||||
|
|
||||||
|
Sometimes, you want to replace an object outright rather than merging it.
|
||||||
|
You'll need to use a function that returns the new object.
|
||||||
|
`u.constant` creates that function for you.
|
||||||
|
|
||||||
|
```js
|
||||||
|
var user = {
|
||||||
|
name: 'Mitch',
|
||||||
|
favorites: {
|
||||||
|
band: 'Nirvana',
|
||||||
|
movie: 'The Matrix'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var newFavorites = {
|
||||||
|
band: 'Coldplay'
|
||||||
|
};
|
||||||
|
|
||||||
|
var result = u({ favorites: u.constant(newFavorites) }, user);
|
||||||
|
|
||||||
|
expect(result).toEqual({ name: 'Mitch', favorites: { band: 'Coldplay' } });
|
||||||
|
```
|
||||||
|
|
||||||
|
```js
|
||||||
|
var alwaysFour = u.constant(4);
|
||||||
|
expect(alwaysFour(32)).toEqual(4);
|
||||||
|
```
|
||||||
|
|
||||||
### `u.if(predicate(, updates)(, object))`
|
### `u.if(predicate(, updates)(, object))`
|
||||||
|
|
||||||
Apply `updates` if `predicate` is truthy, or if `predicate` is a function.
|
Apply `updates` if `predicate` is truthy, or if `predicate` is a function.
|
||||||
|
6
lib/constant.js
Normal file
6
lib/constant.js
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import freeze from './freeze';
|
||||||
|
|
||||||
|
export default function constant(object) {
|
||||||
|
const frozen = freeze(object);
|
||||||
|
return () => frozen;
|
||||||
|
}
|
@ -1,3 +1,4 @@
|
|||||||
|
import constant from './constant';
|
||||||
import freeze from './freeze';
|
import freeze from './freeze';
|
||||||
import is from './is';
|
import is from './is';
|
||||||
import _if from './if';
|
import _if from './if';
|
||||||
@ -13,6 +14,7 @@ import { _ } from './util/curry';
|
|||||||
const u = update;
|
const u = update;
|
||||||
|
|
||||||
u._ = _;
|
u._ = _;
|
||||||
|
u.constant = constant;
|
||||||
u.if = _if;
|
u.if = _if;
|
||||||
u.ifElse = ifElse;
|
u.ifElse = ifElse;
|
||||||
u.is = is;
|
u.is = is;
|
||||||
|
17
test/constant-spec.js
Normal file
17
test/constant-spec.js
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
import { expect } from 'chai';
|
||||||
|
import u from '../lib';
|
||||||
|
|
||||||
|
describe('u.constant', () => {
|
||||||
|
it('returns what it is given... constantly', () => {
|
||||||
|
const func = u.constant(4);
|
||||||
|
|
||||||
|
expect(func()).to.equal(4);
|
||||||
|
expect(func('hi')).to.equal(4);
|
||||||
|
expect(func('hi', 8)).to.equal(4);
|
||||||
|
expect(func(4)).to.equal(4);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('freezes the result', () => {
|
||||||
|
expect(Object.isFrozen(u.constant({})())).to.be.true;
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user