diff --git a/ConsoleTables.Tests/ConsoleTableTest.cs b/ConsoleTables.Tests/ConsoleTableTest.cs index 83181e7..575a4b4 100644 --- a/ConsoleTables.Tests/ConsoleTableTest.cs +++ b/ConsoleTables.Tests/ConsoleTableTest.cs @@ -231,6 +231,22 @@ public void TestDataTable() } + [Fact] + public void TestMinimalFormating() + { + var table = new ConsoleTable("one", "two", "three") + .AddRow(1, 2, 3) + .AddRow("this line should be longer 哈哈哈哈", "yes it is", "oh") + .ToMinimalString(); + Assert.Equal(""" + one two three + ------------------------------------------------------ + 1 2 3 + this line should be longer 哈哈哈哈 yes it is oh + + """, table); + } + class User { public string Name { get; set; } diff --git a/src/ConsoleTables/ConsoleTable.cs b/src/ConsoleTables/ConsoleTable.cs index d5d2436..74bd9e4 100644 --- a/src/ConsoleTables/ConsoleTable.cs +++ b/src/ConsoleTables/ConsoleTable.cs @@ -184,6 +184,10 @@ public override string ToString() private void SetFormats(List columnLengths, List columnAlignment) + { + SetFormats(columnLengths, columnAlignment, "|"); + } + private void SetFormats(List columnLengths, List columnAlignment, string delimiterStr) { var allLines = new List(); allLines.Add(Columns.ToArray()); @@ -196,9 +200,9 @@ private void SetFormats(List columnLengths, List columnAlignment) { var value = d[i]?.ToString() ?? ""; var length = columnLengths[i] - (GetTextWidth(value) - value.Length); - return " | {" + i + "," + columnAlignment[i] + length + "}"; + return " " + delimiterStr + " {" + i + "," + columnAlignment[i] + length + "}"; }) - .Aggregate((s, a) => s + a) + " |"; + .Aggregate((s, a) => s + a) + " " + delimiterStr; }).ToList(); } @@ -282,9 +286,9 @@ private string Format(List columnLengths, char delimiter = '|') .Select(GetNumberAlignment) .ToList(); - SetFormats(columnLengths, columnAlignment); - var delimiterStr = delimiter == char.MinValue ? string.Empty : delimiter.ToString(); + SetFormats(columnLengths, columnAlignment, delimiterStr); + var format = (Enumerable.Range(0, Columns.Count) .Select(i => " " + delimiterStr + " {" + i + "," + columnAlignment[i] + columnLengths[i] + "}") .Aggregate((s, a) => s + a) + " " + delimiterStr).Trim();