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();
 }
示例#3
0
        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);
            }
        }