expressionist

Programmatically generate expression trees in Node.js or plain browser Javascript.

Expressionist

Programmatically generate expression trees in Node.js or plain browser Javascript.

npm install expressionist
WhereExpression = require('expressionist')([
  'or', 'and', 'eql', 'notEql', 'in'
]);
 
var _ = WhereExpression.start;
 
var res = 
  _('country')
  .eql('Canada')
  .or(
    _('country').eql('USA')
    .and(_('job').notEql('spy'))
    .and(_('company').notEql('nsa'))
  );
 
  var pretty = res.pretty();
 
  console.log(util.inspect(pretty, null, 10));
 
/* 
 
Outputs:
 
  { or:
   [ { eql: [ 'country', 'Canada' ] },
     { and:
        [ { eql: [ 'country', 'USA' ] },
          { notEql: [ 'job', 'spy' ] },
          { notEql: [ 'company', 'nsa' ] } ] } ] }
 
*/
  • Syntax sugar.
  • Operator precedence.
  • Browser friendly build.
  • Support this:
var MathExpr = require('expressionist')({
  eqlfunction (lr) { return l === right; },
  gtfunction (lr) { return l > r; }
});
// build expression (...) and then 
var result = expr.eval();
  • Nicer stringified representations and ability to transform to different representations.

MIT: http://olalonde.mit-license.org