(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 = ["$sum", "$count", "$max", "$min", "$average", "$string", "$substring", "$substringBefore", "$substringAfter", "$lowercase", "$uppercase", "$length", "$split", "$join", "$number", "$boolean", "$not", "$map", "$reduce", "$keys", "$lookup", "$append", "$exists", "$spread"] })();