1.2.1 • Published 7 years ago

devisPattern v1.2.1

Weekly downloads
4
License
MIT
Repository
github
Last release
7 years ago

DevisPattern

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.

1.2.1

7 years ago

1.1.0

7 years ago

1.0.2

7 years ago

1.0.1

8 years ago

1.0.0

8 years ago

0.2.2

8 years ago

0.2.1

8 years ago

0.2.0

8 years ago

0.1.0

8 years ago