FunctionSelect: Select a function that passes a condition. A functional alternative to switch-case.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.vscode
docs
spec
.eslintignore
.eslintrc.js
.gitignore
.npmignore
LICENSE
README.md
index.js
package-lock.json
package.json

README.md

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.