New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

cond-table

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cond-table

decision table

latest
Source
npmnpm
Version
0.0.5
Version published
Maintainers
1
Created
Source

cond-table

Build Status Coverage Status

NPM

Checks data object against decision table.

-> DMN Notation.

Usage

const Table = require('cond-table').Table;

var testTable = {
    description: 'Applicant Risk rating',   // optional
    hitPolicy: 'First',                     // optional (actual only First possible) 
    input: {
        'age': {
            description: 'Applicant Age',   // optional
            type: 'number'                  // optional
        },
        'hist': {
            description: 'Medical History',
            type: 'string'
        }
    },
    output: {
        'risk': {
            description: 'Risk Rating',     //optional
            type: 'string'                  //optional
        }
    },
    rules: {
        'older 60 / good': {
            'age': '>60',
            'hist': 'good',
            'risk': 'Medium'
        },
        'older 60 / bad': {
            'age': '>60',
            'hist': 'bad',
            'risk': 'High'
        },
        'mid age': {
            'age': '[25..60]',
            'risk': 'Medium'
        },
        'kids / good': {
            'age': '<25',
            'hist': 'good',
            'risk': 'Low'
        },
        'kids / bad)': {
            'age': '<25',
            'hist': 'bad',
            'risk': 'Medium'
        }
    }
};

// example data sets, to be checked  
var testData = [
    { 'age': '65', 'hist':'good'},
    { 'age': '70', 'hist':'bad'},
    { 'age': '26', 'hist':'good'},
    { 'age': '20', 'hist':'bad'},
    { 'age': '10', 'hist':'good'}
];

// create an instance
let table = new Table(testTable);

// use table to process data sets 
for (let i=0; i< testData.length; i++) {
    let result = table.result(testData[i]); // result.risk is set now
    console.log(result.risk);
};

More Examples

Initiate and compile in separate steps

// create an instance direct..
let table = new Table(testTable);

// ...or set and compile separately
let table = new Table();
table.compile(testTable);

Formular expressions in input

let testTable = {
    description: 'Simple table',
    hitPolicy: 'Unique',
    input: {
        'x': {
            description: 'Input x',
            type: 'number'
        },
        'y': {
            description: 'Input y',
            type: 'number',
            default: 2
        },
        'a': {
            description: 'Formula Input',
            type: 'expression',        // optional
            expression: '2 * x + y'    // check expr-eval for syntax
        }
    },
    output: {
        'z': {},
        't': {}
    },
    rules: {
        'First rule': {
            'x': '< 5, [20..30]',
            'y': '> 6,[30..40]',
            'a': '< 15',                // uses the calculated value
            'z': '7',
            't': 'first'
        },
        'Second rule': {
            'x': '> 5',
            'a': '> 15',
            'z': '2',
            't': 'second'
        }
    }
};

Set default values for input (if value is not provided in data sets)

    input: {
        'x': {
            description: 'Input x',
            type: 'number',
            default: '0'                // 0 must be in quotes
        },
        'y': {
            description: 'Input y',
            type: 'number',
            default: 2                  // with or without quotes
        }
    }

Keywords

rule

FAQs

Package last updated on 26 May 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts