@codefeathers/fuse

FunctionSelect: Select a function that passes a condition. A functional alternative to switch-case.

Usage no npm install needed!

<script type="module">
  import codefeathersFuse from 'https://cdn.skypack.dev/@codefeathers/fuse';
</script>

README

Fuse

FunctionSelect

Fuse selects a function that passes a condition.

Usage

Fuse

const Fuse = require('@codefeathers/fuse');

const a = 100;

const result = new Fuse(a)
    .on(x => x>10,
        a => `${a} is greater than 10.`)
    .on(x => x<10,
        a => `${a} is lesser than 10.`)
    .on(x => x===10,
        a => `${a} is 10.`)

console.log(result.resolve()); // -> "100 is greater than 10."

FuseIterable

const { FuseIterable } = require('@codefeathers/fuse');

const temperatures = [ 0, 20, 30 ];

const result = new FuseIterable(temperatures)
    .on(temp => temp<10,
        () => `Too cold!`)
    .on(temp => temp>=10 && temp <25,
        () => `Just right.`)
    .on(temp => temp>=25,
        () => `Too warm!`)

console.log(result.resolve()); // -> [ "Too cold!", "Just right.", "Too warm!" ]

Docs

Docs exist in /docs directory. Will be served soon.

Development

If you find any mistakes in code/documentation, or if you feel something could be done better, do PR :) I appreciate it.

  • Always write test spec for any code you add. Make sure they run as intended.
  • Add/update JSDoc comments as needed.
  • Use npm scripts for linting, tests, debugging, building docs.

Place your test file as testscript.js in root.

The following npm scripts are available: npm run lint, npm test, npm run debug, npm run docs.

Credits

@Floofies was of huge help during development of this module.

Also, @TRGWII was a source of inspiration and guidance.