npm

Check out our latest tech talk, "JavaScript Supply Chain Security" presented by VP of Security, Adam Baldwin.Watch it here »

switch-case

2.1.4 • Public • Published

switch-case

A switcher for complex and dynamic cases.

NPM version build status Test coverage NPM downloads Node.js dependencies

Install

$ npm install --save switch-case

Get started

Use it just like switch case

const Switcher = require('switch-case');
const switcher = new Switcher();

switcher
    .case(1, () => {
        console.log(1);
    })
    .case(2, () => {
        console.log(2);
    });


switcher.switch(1);   // ===> prints 1 on the screen

Why

For most cases the native syntax switch case is adequate, if you know every case well. But if your cases are not so clear or just dynamic during your program running time, you may need this.

For me, I use this module for a router module, which I would never want to write with native siwtch case syntax.

async handlers

This module supports async handlers in cases.

const result = await switcher.case(1, async () => {
    await sleep(100);
    return 100;
});

Custom proxy

You can change the behavior by providing a proxy:

const switcher = new Switcher(proxy);

While these properties as expected in the proxy:

proxy.match(targetCondition, condition)

Checks if the target condition passed by switcher.switch matched the case condition. If true returned, the result will be executed.

proxy.execute(result, targetCondition)

Executes the result with the target condition as a param. Support both async or sync functions.

proxy.validateCondition(condition)

Check if the condition is valid. If not, an error will be thrown.

proxy.validateResult(result)

Check if the result is valid. If not, an error will be thrown.

proxy.createIndex(condition, index, indexTable)

Create an index on the condition, and store it on the index table.

proxy.searchIndex(condition, indexTable)

Search an index from the index table. Should return the index number list. If false returned, means index not found, the switcher will scan all cases to match.

extend switcher into a router

see lark-router

LICENCE

MIT

install

npm i switch-case

Downloadsweekly downloads

58

version

2.1.4

license

MIT

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar
Report a vulnerability