Skip to content
This repository has been archived by the owner. It is now read-only.
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 

README.md

Decision table parser

A small snippet to parse a decision table

What's a decision table?

Decision tables are a precise yet compact way to model complex rule sets and their corresponding actions.

Example

What should I do today?
Sunny 0 1 0 1 X
Raining 0 0 1 1 X
Typhoon 0 0 0 1
Go outside  1 1 1 1
Take umbrella 1 1
Wear sunglasses  1 1
Stay home 1

Usage

You must supply the list of conditions and your answers. It returns the matched column number.

EXAMPLE_DECISION_TABLE = {
  :conditions => {
    'sunny'           => [0,1,0,1,nil],
    'raining'         => [0,0,1,1,nil],
    'typhoon'         => [0,0,0,0,1]
  },
  :actions => {
    'go outside'      => [1,1,1,1,0],
    'take umbrella'   => [0,0,1,1,0],
    'wear sunglasses' => [0,1,0,1,0],
    'stay home'       => [0,0,0,0,1]
  }
}

EXAMPLE_ANSWERS = [1, 0, 0]

column = DecisionTable::parse(EXAMPLE_DECISION_TABLE[:conditions], EXAMPLE_ANSWERS)
# => 1

In this example, the column is 1, therefore: go outside and wear sunglasses ;)

EXAMPLE_DECISION_TABLE[:actions].each {|x| puts x[0] if x[1][column] == 1 }
# go outside
# wear sunglasses

License

MIT License

About

Parse a Decision Table in Ruby

Resources

License

Releases

No releases published

Packages

No packages published

Languages

You can’t perform that action at this time.