UNPKG

foop

Version:

interfaces that describe their intentions.

57 lines (53 loc) 4.55 kB
var isString = require('../is/stringPrimitive') var isFunction = require('../is/function') var propSatisfies = require('../fp/propSatisfies') var getIsFunction = propSatisfies('get', isFunction) /** * @desc when the condition is true, * trueBrancher is called, * else, falseBrancher is called * * @memberOf Chainable * @version 5.0.0 <- moved to fp from class * @version 4.0.0 <- added string-as-has(condition) * @since 2.0.0 * * @param {boolean | string} condition when string, checks this.get * @param {Function} [trueBrancher=Function] called when true * @param {Function} [falseBrancher=Function] called when false * @return {Chainable} @chainable * * @tests fp/when * * @example * * * const prod = process.env.NODE_ENV === 'production' * chains.when(prod, c => c.set('prod', true), c => c.set('prod', false)) * * */ module.exports = function when(condition, trueBrancher, falseBrancher) { // truthy condition - could be string if (condition) { // ensure we have functions if (isFunction(trueBrancher)) { // if we have a .get function, and we use a string, use that if (isString(condition) && getIsFunction(this)) { if (this.get(condition)) { trueBrancher(this) } } else { trueBrancher(this) } } } else if (isFunction(falseBrancher)) { // ensure function, on else falseBrancher(this) } // chainable return this }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hlbi5qcyIsInNvdXJjZXMiOlsid2hlbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBpc1N0cmluZyA9IHJlcXVpcmUoJy4uL2lzL3N0cmluZ1ByaW1pdGl2ZScpXG5jb25zdCBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi4vaXMvZnVuY3Rpb24nKVxuY29uc3QgcHJvcFNhdGlzZmllcyA9IHJlcXVpcmUoJy4uL2ZwL3Byb3BTYXRpc2ZpZXMnKVxuXG5jb25zdCBnZXRJc0Z1bmN0aW9uID0gcHJvcFNhdGlzZmllcygnZ2V0JywgaXNGdW5jdGlvbilcblxuLyoqXG4gKiBAZGVzYyB3aGVuIHRoZSBjb25kaXRpb24gaXMgdHJ1ZSxcbiAqICAgICAgIHRydWVCcmFuY2hlciBpcyBjYWxsZWQsXG4gKiAgICAgICBlbHNlLCBmYWxzZUJyYW5jaGVyIGlzIGNhbGxlZFxuICpcbiAqIEBtZW1iZXJPZiBDaGFpbmFibGVcbiAqIEB2ZXJzaW9uIDUuMC4wIDwtIG1vdmVkIHRvIGZwIGZyb20gY2xhc3NcbiAqIEB2ZXJzaW9uIDQuMC4wIDwtIGFkZGVkIHN0cmluZy1hcy1oYXMoY29uZGl0aW9uKVxuICogQHNpbmNlIDIuMC4wXG4gKlxuICogQHBhcmFtICB7Ym9vbGVhbiB8IHN0cmluZ30gY29uZGl0aW9uIHdoZW4gc3RyaW5nLCBjaGVja3MgdGhpcy5nZXRcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBbdHJ1ZUJyYW5jaGVyPUZ1bmN0aW9uXSBjYWxsZWQgd2hlbiB0cnVlXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gW2ZhbHNlQnJhbmNoZXI9RnVuY3Rpb25dIGNhbGxlZCB3aGVuIGZhbHNlXG4gKiBAcmV0dXJuIHtDaGFpbmFibGV9IEBjaGFpbmFibGVcbiAqXG4gKiBAdGVzdHMgZnAvd2hlblxuICpcbiAqIEBleGFtcGxlXG4gKlxuICpcbiAqICBjb25zdCBwcm9kID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJ1xuICogIGNoYWlucy53aGVuKHByb2QsIGMgPT4gYy5zZXQoJ3Byb2QnLCB0cnVlKSwgYyA9PiBjLnNldCgncHJvZCcsIGZhbHNlKSlcbiAqXG4gKlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHdoZW4oY29uZGl0aW9uLCB0cnVlQnJhbmNoZXIsIGZhbHNlQnJhbmNoZXIpIHtcbiAgLy8gdHJ1dGh5IGNvbmRpdGlvbiAtIGNvdWxkIGJlIHN0cmluZ1xuICBpZiAoY29uZGl0aW9uKSB7XG4gICAgLy8gZW5zdXJlIHdlIGhhdmUgZnVuY3Rpb25zXG4gICAgaWYgKGlzRnVuY3Rpb24odHJ1ZUJyYW5jaGVyKSkge1xuICAgICAgLy8gaWYgd2UgaGF2ZSBhIC5nZXQgZnVuY3Rpb24sIGFuZCB3ZSB1c2UgYSBzdHJpbmcsIHVzZSB0aGF0XG4gICAgICBpZiAoaXNTdHJpbmcoY29uZGl0aW9uKSAmJiBnZXRJc0Z1bmN0aW9uKHRoaXMpKSB7XG4gICAgICAgIGlmICh0aGlzLmdldChjb25kaXRpb24pKSB7XG4gICAgICAgICAgdHJ1ZUJyYW5jaGVyKHRoaXMpXG4gICAgICAgIH1cbiAgICAgIH1cbiBlbHNlIHtcbiAgICAgICAgdHJ1ZUJyYW5jaGVyKHRoaXMpXG4gICAgICB9XG4gICAgfVxuICB9XG4gZWxzZSBpZiAoaXNGdW5jdGlvbihmYWxzZUJyYW5jaGVyKSkge1xuICAgIC8vIGVuc3VyZSBmdW5jdGlvbiwgb24gZWxzZVxuICAgIGZhbHNlQnJhbmNoZXIodGhpcylcbiAgfVxuXG4gIC8vIGNoYWluYWJsZVxuICByZXR1cm4gdGhpc1xufTtcbiJdLCJuYW1lcyI6WyJjb25zdCJdLCJtYXBwaW5ncyI6IkFBQUFBLEdBQUssQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixDQUFDO0FBQ2pEQSxHQUFLLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztBQUM1Q0EsR0FBSyxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMscUJBQXFCLENBQUM7O0FBRXBEQSxHQUFLLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEyQnRELE1BQU0sQ0FBQyxPQUFPLEdBQUcsU0FBUyxJQUFJLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUU7O0VBRXJFLElBQUksU0FBUyxFQUFFOztJQUViLElBQUksVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFOztNQUU1QixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDOUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1VBQ3ZCLFlBQVksQ0FBQyxJQUFJLENBQUM7U0FDbkI7T0FDRjtNQUNEO1FBQ0UsWUFBWSxDQUFDLElBQUksQ0FBQztPQUNuQjtLQUNGO0dBQ0Y7TUFDRyxJQUFJLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRTs7SUFFakMsYUFBYSxDQUFDLElBQUksQ0FBQztHQUNwQjs7O0VBR0QsT0FBTyxJQUFJO0NBQ1osQ0FBQzsifQ==