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:
- Visual C++ Build Tools or a recent version of Visual C++ will do (the free Community version works well)
- 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
- Windows:
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
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);
});
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.
Generates a new pattern matcher instance.
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.
Return the unique match for this pattern, or null if not found.
Act this pattern.
Return the list of registered patterns that contain this partial pattern.