UNPKG

crocks

Version:

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

41 lines (31 loc) 929 B
/** @license ISC License (c) copyright 2019 original and current authors */ /** @author Ian Hofmann-Hicks (evil) */ var curry = require('../core/curry') var isDefined = require('../core/isDefined') var isEmpty = require('../core/isEmpty') var isNil = require('../core/isNil') var isInteger = require('../core/isInteger') var isString = require('../core/isString') var ref = require('../core/Maybe'); var Nothing = ref.Nothing; var Just = ref.Just; function fn(name) { function getProp(key, target) { if(!(isString(key) && !isEmpty(key) || isInteger(key))) { throw new TypeError((name + ": Non-empty String or Integer required for first argument")) } if(isNil(target)) { return Nothing() } var value = target[key] return isDefined(value) ? Just(value) : Nothing() } return curry(getProp) } var getProp = fn('getProp') getProp.origFn = fn module.exports = getProp