UNPKG

handsome-json

Version:

make your json strings handsome

78 lines (74 loc) 1.78 kB
// Generated by CoffeeScript 1.10.0 var format, render; render = function(element, last, name, depth) { var i, indent, j, key, l, len, rendered, string, value; if (last == null) { last = false; } if (name == null) { name = null; } if (depth == null) { depth = 0; } rendered = ''; indent = ' '.repeat(depth); if (name !== null) { rendered += indent + "\"" + name + "\": "; } else { rendered += "" + indent; } if (element instanceof Array) { rendered += "[\n"; i = 0; l = false; for (j = 0, len = element.length; j < len; j++) { value = element[j]; i += 1; if (i === element.length) { l = true; } rendered += render(value, l, null, depth + 1); } rendered += indent + "]"; } else if (element instanceof Object) { rendered += "{\n"; i = 0; l = false; for (key in element) { value = element[key]; i += 1; if (i === Object.keys(element).length) { l = true; } rendered += render(value, l, key, depth + 1); } rendered += indent + "}"; } else { if (typeof element === 'string') { string = element.replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/"/g, '\\"'); rendered += "\"" + string + "\""; } else if (typeof element === 'bool') { rendered += element === true ? 'true' : 'false'; } else { rendered += "" + element; } } if (!last) { rendered += ",\n"; } else { rendered += "\n"; } return rendered; }; format = function(json) { var error, error1, parsed; try { parsed = JSON.parse(json); } catch (error1) { error = error1; throw new Error('invalid JSON string'); } return render(parsed, true).trim(); }; module.exports = format;