1.0.1 • Published 6 years ago
ramda-lens-map v1.0.1
ramda-lens-map
A lens for ramda which lets you focus on a key in a Map
.
Installation
npm i ramda-lens-map
Usage
You can use ramda-lens-map
like any other lens from ramda. For instance, to
set the value in a Map
:
import { set } from 'ramda';
import lensMap from 'ramda-lens-map';
const myMap = new Map();
const myNewMap = set(lensMap('foo'), 'bar', myMap);
myNewMap
now has a key of 'foo'
with a value of 'bar'
. The original map is
completely unaffected.
Advanced Usage
ramda uses Laarhoven Lenses which are composable. Consider the following example:
import {
compose,
construct,
lensIndex,
set,
times,
} from 'ramda';
import lensMap from 'ramda-lens-map';
const myMaps = times(construct(Map), 3); // Construct an array of three Maps
const myNewMaps = set(compose(lensIndex(1), lensMap('foo')), 'bar', myMaps);
myNewMaps
is a new array where the first and third Map
objects are
unaffected and referentially equal to the first and third Map
objects in
myMaps
. The second Map
object in myNewMaps
is a brand new Map
with
a key 'foo'
set to a value 'bar'
. See src/lens-map.test.ts
for a
working example of lens composition.
Caveats
- This package only provides a lens. Functions such as
evolve
are unaffected. - There is no analog for
dissoc
. As far as I'm aware there is no way to drop the value focused by a lens with any ramda functions.
License
MIT