jora
Version:
JavaScript object query engine
37 lines (33 loc) • 813 B
JavaScript
;
function compile(node, ctx) {
ctx.put(ctx.buildinFn('mapRecursive'));
ctx.put('(');
ctx.nodeOrCurrent(node.value);
ctx.put(',$=>');
ctx.createScope(
() => ctx.node(node.query),
(sp) => {
ctx.put(')');
return '(' + sp + ',';
}
);
ctx.put(')');
}
function walk(node, ctx) {
ctx.nodeOrNothing(node.value);
ctx.node(node.query);
}
function stringify(node, ctx) {
ctx.nodeOrNothing(node.value);
ctx.put('..');
if (ctx.isSimpleGetPropertyQuery(node.query) || ctx.isSimpleMethodCallQuery(node.query)) {
ctx.node(node.query);
} else {
ctx.put('(');
ctx.node(node.query);
ctx.put(')');
}
}
exports.compile = compile;
exports.stringify = stringify;
exports.walk = walk;