private string Serialize(bool includeColumnNames, char delimiter) { if (IsEmpty) { return(null); } var result = new StringBuilder(); if (includeColumnNames) { SerializeColumnNames(result, delimiter); } for (int i = 0; i < Rows.Count; i++) { var row = Rows[i]; for (int j = 0; j < ColumnSerializers.Count; j++) { var columnSerializer = ColumnSerializers[j]; var s = columnSerializer.Serialize(row); TabularText.Format(s, result, delimiter); var isLast = j == ColumnSerializers.Count - 1; if (!isLast) { result.Append(delimiter); } } result.AppendLine(); } return(result.ToString()); }
private void SerializeColumnNames(StringBuilder output, char delimiter) { for (int i = 0; i < ColumnSerializers.Count; i++) { var column = ColumnSerializers[i].Column; TabularText.Format(column.DisplayName, output, delimiter); var isLast = i == ColumnSerializers.Count - 1; if (!isLast) { output.Append(delimiter); } } output.AppendLine(); }
public void TabularText_Parse() { { var s = string.Empty; var result = TabularText.Parse(s, TabularText.CommaDelimiter); Assert.AreEqual(0, result.Count); Assert.AreEqual(0, result._.TextColumns.Count); } { var s = Environment.NewLine; var result = TabularText.Parse(s, TabularText.CommaDelimiter); Assert.AreEqual(1, result.Count); Assert.AreEqual(0, result._.TextColumns.Count); } { var s = Environment.NewLine + Environment.NewLine; var result = TabularText.Parse(s, TabularText.CommaDelimiter); Assert.AreEqual(2, result.Count); Assert.AreEqual(0, result._.TextColumns.Count); } { var s = string.Format("a,b,c"); var result = TabularText.Parse(s, TabularText.CommaDelimiter); Assert.AreEqual(1, result.Count); Assert.AreEqual(3, result._.TextColumns.Count); } { var s = string.Format("a,b,c") + Environment.NewLine; var result = TabularText.Parse(s, TabularText.CommaDelimiter); Assert.AreEqual(1, result.Count); Assert.AreEqual(3, result._.TextColumns.Count); } { var s = "\"a,b,c\",b"; var result = TabularText.Parse(s, TabularText.CommaDelimiter); Assert.AreEqual(1, result.Count); Assert.AreEqual(2, result._.TextColumns.Count); } }