public string GetOutput() { if (Value == null || Value.Count == 0) { return "[] # Empty Array"; } if (!_prettyPrint) { StringBuilder sb = new StringBuilder(); List<string> output = Value.Select(tomlToken => tomlToken.GetOutput()).ToList(); sb.Append("[ ").Append(string.Join(", ", output)).Append(" ]"); return sb.ToString(); } List<PrettyPrint> tokens = GetPrettyPrintTokens(); PrettyArray pa = new PrettyArray(tokens); string s = MakePrettyPrint(pa); return s; }
private string MakePrettyPrint(PrettyArray array, int depth = 0) { string spcBracket = new string(' ', depth * Spacing); string spcPadding = new string(' ', (depth + 1) * Spacing); int currentSpace = MaxWidth - Spacing * depth; if (array.Output.Length <= currentSpace) { return spcBracket + array.Output; } StringBuilder sb = new StringBuilder(); if (depth == 0) { sb.AppendLine("["); //sb.AppendLine().Append("]"); } else { sb.AppendLine().Append(spcBracket).AppendLine("["); //sb.AppendLine().Append(spcBracket).Append("]"); } foreach (var prettyPrint in array.Tokens) { if (prettyPrint is PrettyArray) { sb.Append(MakePrettyPrint(prettyPrint as PrettyArray, depth + 1)); continue; } if (prettyPrint is PrettyText) { sb.Append(spcPadding).Append(prettyPrint.Output); continue; } if (prettyPrint is PrettyComma) { sb.AppendLine(prettyPrint.Output); } } if (depth == 0) { sb.AppendLine().Append("]"); } else { sb.AppendLine().Append(spcBracket).Append("]"); } return sb.ToString(); }