(function() { function indentLine(str,length) { if (length <= 0) { return str; } var i = (new Array(length)).join(" "); str = str.replace(/^\s*/,i); return str; } function formatExpression(str) { var length = str.length; var start = 0; var inString = false; var inBox = false; var quoteChar; var list = []; var stack = []; var frame; var v; var matchingBrackets = { "(":")", "[":"]", "{":"}" } for (var i=0;i 30) { longStack.push(true); indent += 4; pre = result.substring(0,offset+f.pos+1); post = result.substring(offset+f.pos+1); indented = indentLine(post,indent); result = pre+"\n"+indented; offset += indented.length-post.length+1; } else { longStack.push(false); } } else if (f.type === "close-block") { if (f.width > 30) { indent -= 4; pre = result.substring(0,offset+f.pos); post = result.substring(offset+f.pos); indented = indentLine(post,indent); result = pre+"\n"+indented; offset += indented.length-post.length+1; } longStack.pop(); } }) //console.log(result); return result; } jsonata.format = formatExpression; jsonata.functions = { '$append':{ args:['array','array'] }, '$average':{ args:['value'] }, '$boolean':{ args:['value'] }, '$count':{ args:['array'] }, '$exists':{ args:['value'] }, '$join':{ args:['array','separator'] }, '$keys':{ args:['object'] }, '$length':{ args:['string'] }, '$lookup':{ args:['object','key'] }, '$lowercase':{ args:['string'] }, '$map':{ args:[] }, '$max':{ args:['array'] }, '$min':{ args:['array'] }, '$not':{ args:['value'] }, '$number':{ args:['value'] }, '$reduce':{ args:[] }, '$split':{ args:['string','separator','limit'] }, '$spread':{ args:['object'] }, '$string':{ args:['value'] }, '$substring':{ args:['string','start','length'] }, '$substringAfter':{ args:['string','chars'] }, '$substringBefore':{ args:['string','chars'] }, '$sum':{ args:['array'] }, '$uppercase':{ args:['string'] } } jsonata.getFunctionSnippet = function(fn) { var snippetText = ""; if (jsonata.functions.hasOwnProperty(fn)) { var def = jsonata.functions[fn]; snippetText = "\\"+fn+"("; if (def.args) { snippetText += def.args.map(function(a,i) { return "${"+(i+1)+":"+a+"}"}).join(", "); } snippetText += ")\n" } return snippetText; } })();