jora
Version:
JavaScript object query engine
31 lines (29 loc) • 739 B
JavaScript
export 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(')');
}
export function walk(node, ctx) {
ctx.nodeOrNothing(node.value);
ctx.node(node.query);
}
export 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(')');
}
}