UNPKG

jora

Version:

JavaScript object query engine

39 lines (33 loc) 802 B
'use strict'; const comparator = { '': 'cmp', 'N': 'cmpNatural', 'A': 'cmpAnalytical', 'NA': 'cmpNaturalAnalytical', 'AN': 'cmpNaturalAnalytical' }; function compile(node, ctx) { const isDesc = node.order.startsWith('desc'); const cmpFn = comparator[node.order.slice(isDesc ? 4 : 3)] || comparator['']; if (isDesc) { ctx.put('-'); } ctx.put(ctx.buildinFn(cmpFn)); ctx.put('((_q=$=>('); ctx.createScope( () => ctx.node(node.query), (sp) => sp + ',' ); ctx.put('))(_a),_q(_b))'); } function walk(node, ctx) { ctx.node(node.query); } function stringify(node, ctx) { ctx.node(node.query); ctx.put(' '); ctx.put(node.order); } exports.compile = compile; exports.stringify = stringify; exports.walk = walk;