/WhenDo

Small function that can be used instead if-then statement in functional style programming with JavaScript

Primary LanguageJavaScriptMIT LicenseMIT

WhenDo

Coverage Status Build Status npm TypeSCript GitHub license

Description

Small function that can be used instead of 'if-then' statement in functional style programming with JavaScript. Takes a predicate and one or two handlers. Returns new function that will check the predicate and execute a true/false handler.

No external dependencies, uses ES6 inside, TypeScript ready.

Installation

npm install @drag13/when-do

Usage

Usage is simple: WhenDo function returns a new function that will be executed depending on a predicate. You can pass params and expect return result.

const wd = require('@drag13/when-do');
const myComposedFunction = wd(() => true, (name) => `hello ${name}`);
console.assert(myComposedFunction('mate') === 'hello mate');

If you pass a predicate as a function, it will not be invoked until composed function call is executed.

const wd = require('@drag13/when-do');
const log = console.log;
const demo = wd(()=> { log('predicate calculated');  return true;},
                ()=> log('trueFunction executed'));
log('start');
demo();

Result will be

start

predicate calculated

trueFunction executed

React

If you want to have if-then-else statement inside react - try this example

import iftrue from '@drag13/when-do';

render() {
    return (
        <div className="WhenDoExample">
            {
                iftrue(this.state.counter % 2,
                    () => <div>Odd</div>,
                    () => <div>Even</div>)()
            }
            <button onClick={() => this.setState({ counter: this.state.counter + 1 })}>CLICK</button>
        </div>
    );
}

Tip: You can name WhenDo function whatever you want, just change name inside the import!

import ifthenelse from '@drag13/when-do';
import iftrue from '@drag13/when-do'

TypeScript

Feel free to use it with TypeScript

import * as whenDo from '@drag13/when-do';
const myComposedFunction = wd(() => true, (name) => `hello ${name}`);
console.assert(myComposedFunction('mate') === 'hello mate');

Tests

npm test

Contributing

Any bug fixing is appreciated. If you want to add new functionality - you're welcome. But KISS it please.