Skip to content

A fast native pattern matcher addon on JavaScript object properties

License

Notifications You must be signed in to change notification settings

Devisjs/devisPattern

Repository files navigation

DevisPattern

A fast native pattern matcher addon on JavaScript object properties.

Version License bitHound Overall Score bitHound Overall Score travis

This addon is used by the devis framework to pattern match actions.

Requirements:

It's necessary, before using DevisPattern to install:

  • CMake(*.msi version for windows: You must check the addition of the path for all users, And restart your computer after installation)
  • A proper C/C++ compiler toolchain of the given platform
    • Windows:
    • Unix/linux-gnu:
      • Clang or GCC
      • Ninja or Make (Ninja will be picked if both present)
      • Xcode with command line tools if you are under mac os

Install

npm install devisPattern

Or, if you download the project:

Generate the appropriate project build files for the current platform. Use configure for that:

node-gyp configure

Now you will have either a Makefile (on Unix platforms) or a vcxproj file (on Windows) in the build/ directory. Next invoke the build command:

node-gyp build

Quick example

Here's how you register some patterns, and then search for matches:

const devisPattern =require("devisPattern"); //or require("./devisPattern/devisPattern"); if you download the project 

devisPattern.add({
    action: 'game',
    cmd: 'play'
}, (args, done) => {

    done({
        result: 'play'
    });
});
devisPattern.add({
    action: 'game',
    cmd: 'pause'
}, (args, done)=> {

    done({
        result: 'pause'
    });
});

devisPattern.call({
    action: 'game',
    cmd: 'play'
}, (result)=> {

    console.log(result);

});

devisPattern.call({
    action: 'game',
    cmd: 'pause'
}, (result) =>{


    console.log(result);
});

The Why

This addon lets you build a simple decision tree so you can avoid writing if statements. It tries to make the minimum number of comparisons necessary to pick out the most specific match.

API

devisPattern

Generates a new pattern matcher instance.

.add( {...pattern...}, object )

Register a pattern, and the object that will be returned if an input matches. Both keys and values are considered to be strings. Other types are converted to strings.

.find( {...pattern...})

Return the unique match for this pattern, or null if not found.

.call({...pattern...},{...arguments...},callback)

Act this pattern.

.list( )

Return the list of registered patterns that contain this partial pattern.

About

A fast native pattern matcher addon on JavaScript object properties

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published