Exemple #1
0
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)
Exemple #2
0
	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);
Exemple #3
0
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));