jora
Version:
JavaScript object query engine
37 lines (32 loc) • 863 B
JavaScript
;
function suggest(node, ctx) {
ctx.range(node.property.range, 'path', node.value || undefined, !node.value);
if (node.value === null) {
ctx.range(node.property.range, 'var');
}
if (node.range &&
node.value === null &&
node.property.range[0] !== node.range[0]) {
ctx.queryRoot(node.range[0]);
}
}
function compile(node, ctx) {
ctx.put(ctx.buildinFn('map'));
ctx.put('(');
ctx.nodeOrCurrent(node.value);
ctx.put(',');
ctx.node(node.property);
ctx.put(')');
}
function walk(node, ctx) {
ctx.nodeOrNothing(node.value);
ctx.node(node.property);
}
function stringify(node, ctx) {
ctx.nodeOrNothing(node.value) && ctx.put('.');
ctx.node(node.property);
}
exports.compile = compile;
exports.stringify = stringify;
exports.suggest = suggest;
exports.walk = walk;