| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- using System.Collections.Generic;
- using System.Text;
- namespace FastJSON
- {
- internal static class Formatter
- {
- public static string Indent = " ";
- public static void AppendIndent(StringBuilder sb, int count)
- {
- for (; count > 0; --count) sb.Append(Indent);
- }
- public static string PrettyPrint(string input)
- {
- var output = new StringBuilder();
- int depth = 0;
- int len = input.Length;
- char[] chars = input.ToCharArray();
- for (int i = 0; i < len; ++i)
- {
- char ch = chars[i];
- if (ch == '\"') // found string span
- {
- bool str = true;
- while (str)
- {
- output.Append(ch);
- ch = chars[++i];
- if (ch == '\\')
- {
- output.Append(ch);
- ch = chars[++i];
- }
- else if (ch == '\"')
- str = false;
- }
- }
- switch (ch)
- {
- case '{':
- case '[':
- output.Append(ch);
- output.AppendLine();
- AppendIndent(output, ++depth);
- break;
- case '}':
- case ']':
- output.AppendLine();
- AppendIndent(output, --depth);
- output.Append(ch);
- break;
- case ',':
- output.Append(ch);
- output.AppendLine();
- AppendIndent(output, depth);
- break;
- case ':':
- output.Append(" : ");
- break;
- default:
- if (!char.IsWhiteSpace(ch))
- output.Append(ch);
- break;
- }
- }
- return output.ToString();
- }
- }
- }
|