12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- 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();
- }
- }
- }
|