UNPKG

lib-jsl

Version:

JSL is a JSON based logic programming library meant for embedded use

72 lines (58 loc) 1.88 kB
var JSL = require('../../jsl.js'); var validator = require('../../validator.js'); var rules = [ [ { txnpart : { name : '$name', obj : '$obj'} }, { $or : [ { $and : [ { rows : { part3 : '$part3'} }, { $bind : [ [ '$name', '$obj'], [null, null] ] } ] }, { $and : [ { rows : { part2 : '$part2'} }, { part3 : '$part3'}, { $bind : [ [ '$name', '$obj'], ['part3', '$part3'] ] } ] }, { $and : [ { rows : { part1 : '$part1'} }, { part2 : '$part2'}, { $bind : [ [ '$name', '$obj'], ['part2', '$part2'] ] } ] }, { $and : [ { part1 : '$part1' }, { $bind : [ [ '$name', '$obj'], ['part1', '$part1'] ] } ] } ] } ], [{ part1 : { a : 1, b : 2 }}], [{ part2 : '$part2'}, { rows : { part1 : { a : '$a', b : '$b'}}}, { $bind : [ '$part2', {x: '$a', y : '$b', c : 3, d : 4 } ] }, ], [{ part3 : '$part3'}, { rows : { part2 : { c : '$c', d : '$d'}}}, { $bind : [ '$part3', {p: '$c', q : '$d', e : 5, f : 6 } ] }, ] ]; //console.log(JSON.stringify(rules, null, 2)); if (!validator.validateJsl(rules)) { console.log('rules validation failed'); process.exit(); } var callbacks = {}; var query = [{ txnpart : '$txnpart'}]; var transform = '$txnpart'; var retval = []; var rows = {}; do { //console.log(JSON.stringify(rules.concat([[{rows : rows}]]), null,2)); var jsl = new JSL ({ rules : rules.concat([[{rows : rows}]]), query : query, transform : transform, callbacks : callbacks }); retval = jsl.run(); if (retval != null && retval[0] != null) { rows[retval[0].name] = retval[0].obj } console.log(JSON.stringify(retval, null,2)); } while (retval[0].obj != null)