const R = require('ramda') const L = require('ramda-lens') console.log( L.view(R.lensProp('value'), { value: 11 }) ) const value = R.lensProp('value') const d1 = { name: 'data1', value: 1 } const r1 = L.view(value, d1) console.log(r1) const d2 = L.set(value, 22, d1) console.log(d2) const d3 = L.over(value, x => x * 10, d1) console.log(d3)
return L.lens((x) => { return x.get(key); }, (val, x) => { return x.set(key, val); }); }; // immutable data const addrs = I.List.of(I.Map({street: '99 Walnut Dr.', zip: '04821'}), I.Map({street: '2321 Crane Way', zip: '08082'})); const user = I.Map({id: 3, name: 'bob', addresses: addrs}); const addresses = immLens('addresses'); const street = immLens('street'); const allStreets = _.compose(addresses, L.mapped, street); const getUser = (id) => { return new Task((reject, resolve) => { setTimeout(() => { resolve(user); }, 400); }); }; const profilePage = _.compose(_.map((x) => { return `<span>${x.get('street')}</span>`; }), L.view(addresses)); const updateUser = L.over(allStreets, _.replace(/\d+/, '****')); const renderProfile = _.compose(_.map(_.compose(profilePage, updateUser)), getUser); renderProfile(1).fork(console.log, console.log);
const _ = require('ramda'); // import {mapped, over, view, set, lens, iso, from} from 'ramda-lens'; const L = require('ramda-lens'); // import {Map, List} from 'immutable'; const I = require('immutable'); const addrs = [{street: '99 Walnut Dr.', zip: '04821'}, {street: '2321 Crane Way', zip: '08082'}]; const user = {id: 3, name: 'Charles Bronson', addresses: addrs}; // Make a lens for the name property. const name = _.lensProp('name'); console.log(L.view(name, user)); // Charles Bronson console.log(L.set(name, 'Richard Branson', user)); // {id: 3, name: 'Richard Branson', addresses: [{street: '99 Walnut Dr.', zip: '04821'}, {street: '2321 Crane Way', zip: '08082'}]} console.log(L.over(name, _.toUpper, user)); // {id: 3, name: 'CHARLES BRONSON', addresses: [{street: '99 Walnut Dr.', zip: '04821'}, {street: '2321 Crane Way', zip: '08082'}]} const addresses = _.lensProp('addresses'); const street = _.lensProp('street'); const first = _.lensIndex(0); const firstStreet = _.compose(addresses, first, street); console.log(L.view(firstStreet, user));