1.0.1 • Published 6 years ago

ramda-lens-map v1.0.1

Weekly downloads
4
License
MIT
Repository
github
Last release
6 years ago

ramda-lens-map

Dependency Status devDependency Status Greenkeeper badge Build Status Npm Version License Commitizen friendly Badges

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

1.0.1

6 years ago

1.0.0

6 years ago