devisPattern

1.2.1 • Public • Published

DevisPattern

Build Status Version License bitHound Overall Score

bitHound Overall Score travis


A fast native pattern matcher addon on JavaScript object properties.

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.

Package Sidebar

Install

npm i devisPattern

Weekly Downloads

1

Version

1.2.1

License

MIT

Last publish

Collaborators

  • ismailrei