grovel
v2.2.0
Published
Utilities to handle almost-immutable data structures
Downloads
6
Readme
grovel
Disclaimer: this library is tailor-made for another project. No attempt will be made to spin it into its own project / PRs with new features will be ignored.
A collection of utilities to handle almost-immutable data.
The idea is to be able to do oldState === newState
or oldState.a.b.c
===
newState.a.b.c
rather than _.isEqual
. Hence, assocIn
generates a lot of
shallow copies. Oh well.
Usage
The recommended way to use grovel is to use babel with function binding, which allows you to write code like this:
import {assocIn, getIn} from 'grovel'
function doSomething () {
const a = {}::assocIn(['earth', 'france', 'cheese'], 'camembert')
const france = a::getIn(['earth', 'france'])
assert.same(france, {cheese: 'camembert'})
const b = a::assocIn(['earth', 'england', 'cheese'], 'cheddar')
assert.same(england, {cheese: 'cheddar'})
const france2 = b::getIn(['earth', 'france'])
assert(france2 === france)
}
However, grovel/core
exports regular old functions, if that's more your style.