foop
Version:
interfaces that describe their intentions.
57 lines (53 loc) • 4.55 kB
JavaScript
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==