UNPKG

crocks

Version:

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

51 lines (39 loc) 1.22 kB
/** @license ISC License (c) copyright 2018 original and current authors */ /** @author Ian Hofmann-Hicks (evil) */ var curry = require('../core/curry') var isArray = require('../core/isArray') var isInteger = require('../core/isInteger') var isObject = require('../core/isObject') var isString = require('../core/isString') var array = require('../core/array') var object = require('../core/object') function fn(name) { function setProp(key, val, x) { if(isObject(x)) { if(isString(key)) { return object.set(key, val, x) } throw new TypeError( (name + ": String required for first argument when third argument is an Object") ) } if(isArray(x)) { if(isInteger(key) && key >= 0) { return array.set(key, val, x) } throw new TypeError( (name + ": Positive Integer required for first argument when third argument is an Array") ) } throw new TypeError( (name + ": Object or Array required for third argument") ) } return curry(setProp) } // setProp :: (String | Integer) -> a -> (Object | Array) -> (Object | Array) var setProp = fn('setProp') setProp.origFn = fn module.exports = setProp