function $format()

in tool/lib.js [48:125]


    function $format(buffer, totalIndent, state, o) {
        if (typeof o != "object" || !o) {
            if (typeof o == "string")
                buffer.push(JSON.stringify(o));
            else
                buffer.push("" + o);
        }
        else if (Array.isArray(o)) {
            buffer.push("[")
            
            var len = totalIndent.length
            var oneLine = true;
            for (var i = 0; i < o.length; i++) {
                if (typeof o[i] == "string") {
                    len += o[i].length + 2
                } else if (!o[i]) {
                    len += (o[i] + "").length
                } else {
                    oneLine = false;
                    break;
                }
                len += 2;
                if (len > 60) {
                    oneLine = false;
                    break;
                }
            }
            
            for (var i = 0; i < o.length; i++) {
                if (o[i] && typeof o[i] == "object") {
                    $format(buffer, totalIndent, state, o[i]);
                    if (i < o.length - 1)
                        buffer.push(", ");
                } else {
                    if (oneLine)
                        i && buffer.push(" ");
                    else
                        buffer.push("\n", totalIndent + indent)
                    $format(buffer, totalIndent + indent, state, o[i]);
                    if (i < o.length - 1)
                        buffer.push(",");
                }
                
            }
            if (!oneLine && buffer[buffer.length - 1] != "}")
                buffer.push("\n" + totalIndent)
            buffer.push("]")
        }
        else {
            var keys = Object.keys(o);
            buffer.push("{", "\n");
            for (var i = 0; i < keys.length; i++) {
                buffer.push(totalIndent + indent);
                if (/^\w+$/.test(keys[i]))
                    buffer.push(keys[i]);
                else
                    buffer.push(JSON.stringify(keys[i]));
                buffer.push(": ")

                if (keys[i] == "regex" && typeof o[keys[i]] == "string") {
                    try {
                        var re = new RegExp(o[keys[i]]);
                        buffer.push("/" + re.source.replace(/\\.|\//g, function(f) {
                            return f.length == 1 ? "\\" + f : f;
                        }) + "/");
                    } catch(e) {
                        $format(buffer, totalIndent + indent, state, o[keys[i]]);
                    }
                } else {
                    $format(buffer, totalIndent + indent, state, o[keys[i]]);
                }
                
                if (i < keys.length - 1)
                    buffer.push(",", "\n");
            }
            buffer.push("\n", totalIndent, "}");
        }
    }