UNPKG

jora

Version:

JavaScript object query engine

51 lines (42 loc) 1.06 kB
'use strict'; function compile(node, ctx) { switch (node.operator) { case 'no': case 'not': ctx.put('!'); ctx.put(ctx.buildinFn('bool')); ctx.put('('); ctx.node(node.argument); ctx.put(')'); break; case '+': case '-': ctx.put(node.operator); ctx.node(node.argument); break; case 'is': ctx.put('!!('); ctx.node(node.argument); ctx.put(')'); break; default: { ctx.error('Unknown operator "' + node.operator + '"', node); } } } function walk(node, ctx) { ctx.node(node.argument); if (node.operator && node.operator.type) { ctx.node(node.operator); } } function stringify(node, ctx) { ctx.put(node.operator); if (node.operator !== '-' && node.operator !== '+') { ctx.put(' '); } ctx.node(node.argument); } exports.compile = compile; exports.stringify = stringify; exports.walk = walk;