logica
Version:
a compile-to-javascript predicate logic language
59 lines (47 loc) • 993 B
JavaScript
var heredoc = require('heredoc')
var assert = require('assert')
var compile = require('../compiler')
var hydrate = require('../hydrate')
var src = heredoc(function(){/*
(AND,
(OR, foo),
(OR, foo, false),
(=, Pasta, "pesto"),
(OR,
(=, Coupa, true),
(=, Philz, true),
(=, BlueBottle, true)),
(OR,
(>=, Bread, 1),
(>=, Water, 1)),
(=, Hungry, true),
(=, Status, "ready"))
*/})
var pretty = compile(src, {prettyPrint: true});
var plain = compile(src);
var stateTrue = {
foo: true,
Pasta: "pesto",
Coupa: true,
Philz: false,
BlueBottle: false,
Bread: 0,
Water: 1,
Hungry: true,
Status: "ready"
}
var stateFalse = {
foo: true,
Pasta: "pesto",
Coupa: false,
Philz: false,
BlueBottle: false,
Bread: 0,
Water: 1,
Hungry: true,
Status: "ready"
}
var fn = hydrate(plain);
assert.equal(fn(stateTrue), true)
assert.equal(fn(stateFalse), false)
console.log('success')