UNPKG

logica

Version:

a compile-to-javascript predicate logic language

59 lines (47 loc) 993 B
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')