Git Product home page Git Product logo

rrules's Introduction

Rrules

A simple rules engine ported to Typescript from venmo/business-rules(https://github.com/venmo/business-rules).

Usage

class Test {
    constructor(public name: string) {
    }
}

/***
 * Extend BaseVariables to wrap model accessors and define the type of operations to be done (StringType)
 */
class TestVariables extends BaseVariables {
    constructor(public test: Test) {
        super();
    }

    @ruleVariable(StringType, 'Returns the name of the test.')
    getName() {
        return this.test.name;
    }
}

/**
 * Define actions to be taken when conditions are met.
 * */ 
class TestActions extends BaseActions {
    constructor(public test: Test) {
        super();
    }

    @ruleAction({value: ParameterType.STRING}, 'Sets the name of the product.')
    setName(value: string) {
        this.test.name = value;
    }
}

Define your rules to be loaded at runtime:

[
  {
    "conditions":{"all":[{"name":"getName","operator":"equalTo","value":"Test"}]},
    "actions":[{"name":"setName","params":{"value":"Hello World!"}}]
  }
]

Finally, run the rules:

let rules: [Rule] = JSON.parse(rulesString);
let test = new Test('Test');
let result = runAll(rules, new TestVariables(test), new TestActions(test));
test.name == 'Hello World' // true!

Testing

npm run test

npm run coverage

rrules's People

Contributors

jreeter avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.