/** * Manual formatter taken straight from https://github.com/umbrae/jsonlintdotcom **/ /*jslint white: true, devel: true, onevar: true, browser: true, undef: true, nomen: true, regexp: true, plusplus: false, bitwise: true, newcap: true, maxerr: 50, indent: 4 */ /** * jsl.format - Provide json reformatting in a character-by-character approach, so that even invalid JSON may be reformatted (to the best of its ability). * **/ function repeat(count: number, separator: string = ' ') { return new Array(count + 1).join(separator); } export function formatJson(json: any) { let newJson = '', indentLevel = 0, currentChar = null; for (let i = 0, len = json.length; i < len; i++) { currentChar = json.charAt(i); switch (currentChar) { case '{': case '[': newJson += `${currentChar}\n${repeat(indentLevel + 1)}`; indentLevel += 1; break; case '}': case ']': indentLevel -= 1; newJson += `\n${repeat(indentLevel)}${currentChar}`; break; case ',': newJson += ',\n' + repeat(indentLevel); break; case ':': newJson += ': '; break; default: newJson += currentChar; break; } } return newJson; }