UNPKG

crocks

Version:

A collection of well known Algebraic Datatypes for your utter enjoyment.

56 lines (45 loc) 1.06 kB
/** @license ISC License (c) copyright 2017 original and current authors */ /** @author Ian Hofmann-Hicks (evil) */ function rejectUnit(obj) { return function(acc, key) { var value = obj[key] if(value !== undefined) { acc[key] = value } return acc } } function assign(x, m) { var result = Object.keys(m).reduce(rejectUnit(m), {}) return Object.keys(x).reduce(rejectUnit(x), result) } function filter(f, m) { return Object.keys(m).reduce(function (acc, key) { if(f(m[key])) { acc[key] = m[key] } return acc }, {}) } function map(f, m) { return Object.keys(m).reduce(function (acc, key) { acc[key] = f(m[key]) return acc }, {}) } function set(key, val, m) { var obj; return assign(( obj = {}, obj[key] = val, obj ), m) } function unset(key, m) { return Object.keys(m).reduce(function (acc, k) { if(m[k] !== undefined && k !== key) { acc[k] = m[k] } return acc }, {}) } module.exports = { assign: assign, filter: filter, map: map, set: set, unset: unset }