Skip to content

Commit d839a47

Browse files
authored
Merge pull request #19 from BrunoVT1992/develop
Version 2.0.0 release
2 parents c1d2c5e + d97329f commit d839a47

8 files changed

Lines changed: 960 additions & 508 deletions

File tree

ChangeLogs/2.0.0-ChangeLog.md

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# V2.0.0
2+
3+
## New Properties
4+
5+
| Property | Type | Default | Description |
6+
|----------|------|---------|-------------|
7+
| `Footers` | `string[]` | `Array.Empty<string>()` | The table footers. Footers are not required. |
8+
| `FooterTextAlignmentRight` | `bool` | `false` | When `true`, footer text is right-aligned otherwise left aligned |
9+
10+
## New Method
11+
12+
| Method | Description |
13+
|--------|-------------|
14+
| `SetFooters(params string[] footers)` | Sets the table footers. Calling this again will overwrite previous footers. Footers are not required. |
15+
16+
## New Styling
17+
- Headers now have a double bottom line to seperate them from the rows.
18+
- Now an option to add footers to the table (optional). These are drawn without borders at the bottom.
19+
- Footer text can be left or right aligned.
20+
21+
```csharp
22+
using ConsoleTable.Text;
23+
24+
// Setup the table
25+
var table = new Table();
26+
27+
// Set headers
28+
table.SetHeaders("Name", "Age", "City");
29+
30+
// Add rows
31+
table.AddRow("Alice Cooper", "30", "New York");
32+
33+
table.AddRows(new string[][]
34+
{
35+
new string[] { "Bob", "25", "Los Angeles" },
36+
new string[] { "Charlie Brown", "47", "Chicago" }
37+
});
38+
39+
//Set footers
40+
table.SetFooters("Total: 3", "Total Age: 102");
41+
42+
// Display the table
43+
Console.WriteLine(table.ToTable());
44+
```
45+
46+
Output:
47+
```
48+
┌───────────────┬────────────────┬─────────────┐
49+
│ Name │ Age │ City │
50+
├═══════════════┼════════════════┼═════════════┤
51+
│ Alice Cooper │ 30 │ New York │
52+
├───────────────┼────────────────┼─────────────┤
53+
│ Bob │ 25 │ Los Angeles │
54+
├───────────────┼────────────────┼─────────────┤
55+
│ Charlie Brown │ 47 │ Chicago │
56+
└───────────────┴────────────────┴─────────────┘
57+
Total: 3 Total Age: 102
58+
```
59+
60+
## Performance Improvements
61+
- Slightly improved performance when rendering large tables with many rows and columns.

ConsoleTable.Text.Examples/Program.cs

Lines changed: 64 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,21 @@ static void Main(string[] args)
88

99
WriteDefaultTableWithProperties();
1010

11-
WriteTableWithStyling(true, true, 10);
11+
WriteTableWithStyling(true, true, true, 10);
1212

13-
WriteTableWithStyling(false, true, 10);
13+
WriteTableWithStyling(false, true, true, 10);
1414

15-
WriteTableWithStyling(true, false, 10);
15+
WriteTableWithStyling(true, false, true, 10);
1616

17-
WriteTableWithStyling(false, false, 10);
17+
WriteTableWithStyling(true, true, false, 10);
1818

19-
WriteTableWithoutHeaders();
19+
WriteTableWithStyling(false, false, false, 10);
20+
21+
WriteTableOnlyHeaders();
22+
23+
WriteTableOnlyRows();
24+
25+
WriteTableOnlyFooters();
2026

2127
WriteTableMoreHeaders();
2228

@@ -36,15 +42,24 @@ private static void WriteDefaultTable()
3642
Console.WriteLine();
3743
Console.WriteLine("Default table:");
3844

45+
// Setup the table
3946
var table = new Table();
47+
48+
// Set headers
4049
table.SetHeaders("Name", "Age", "City");
50+
51+
// Add rows
4152
table.AddRow("Alice Cooper", "30", "New York");
4253
table.AddRows(new string[][]
4354
{
4455
new string[] { "Bob", "25", "Los Angeles" },
4556
new string[] { "Charlie Brown", "47", "Chicago" }
4657
});
4758

59+
// Set footers
60+
table.SetFooters("Total: 3", "Total Age: 102");
61+
62+
// Display the table
4863
Console.WriteLine(table.ToTable());
4964
Console.WriteLine();
5065
}
@@ -70,15 +85,41 @@ private static void WriteDefaultTableWithProperties()
7085
Console.WriteLine();
7186
}
7287

73-
private static void WriteTableWithoutHeaders()
88+
private static void WriteTableOnlyRows()
7489
{
7590
Console.WriteLine();
76-
Console.WriteLine("Table without headers:");
91+
Console.WriteLine("Table only rows:");
7792

7893
var table = new Table();
7994

8095
for (int i = 1; i <= 5; i++)
96+
{
8197
table.AddRow($"name {i}", (i * 15).ToString());
98+
}
99+
100+
Console.WriteLine(table.ToString());
101+
Console.WriteLine();
102+
}
103+
104+
private static void WriteTableOnlyHeaders()
105+
{
106+
Console.WriteLine();
107+
Console.WriteLine("Table only headers:");
108+
109+
var table = new Table();
110+
table.SetHeaders("Name", "Age", "City");
111+
112+
Console.WriteLine(table.ToString());
113+
Console.WriteLine();
114+
}
115+
116+
private static void WriteTableOnlyFooters()
117+
{
118+
Console.WriteLine();
119+
Console.WriteLine("Table only footers:");
120+
121+
var table = new Table();
122+
table.SetFooters("Total: 3", "Total Age: 102");
82123

83124
Console.WriteLine(table.ToString());
84125
Console.WriteLine();
@@ -145,24 +186,28 @@ private static void WriteTableEachRowRandom()
145186
table.AddRow("Mathias", "37", "Oslo", "Norway", "Europe", "Earth", "Solar System");
146187
table.AddRow("Kenny", "55", "Tokyo");
147188

189+
table.SetFooters("Footer 1", "Footer 2");
190+
148191
Console.WriteLine(table.ToString());
149192
Console.WriteLine();
150193
}
151194

152-
private static void WriteTableWithStyling(bool headerTextAlignRight, bool rowTextAlignRight, int padding)
195+
private static void WriteTableWithStyling(bool headerTextAlignRight, bool rowTextAlignRight, bool footerTextAlignRight, int padding)
153196
{
154197
Console.WriteLine();
155198
Console.WriteLine($"Table with following styling:");
156199
Console.WriteLine($"Header text alignment: {(headerTextAlignRight ? "right" : "left")}");
157200
Console.WriteLine($"Row text alignment: {(rowTextAlignRight ? "right" : "left")}");
201+
Console.WriteLine($"Footer text alignment: {(footerTextAlignRight ? "right" : "left")}");
158202
Console.WriteLine($"Padding: {padding}");
159203

160204
var table = new Table
161205
{
162206
CachingEnabled = true,
163207
Padding = padding,
164208
HeaderTextAlignmentRight = headerTextAlignRight,
165-
RowTextAlignmentRight = rowTextAlignRight
209+
RowTextAlignmentRight = rowTextAlignRight,
210+
FooterTextAlignmentRight = footerTextAlignRight
166211
};
167212

168213
table.SetHeaders("Name", "Age", "City");
@@ -175,6 +220,8 @@ private static void WriteTableWithStyling(bool headerTextAlignRight, bool rowTex
175220
table.AddRow($"Very Long Name {i}", (i * 8).ToString(), $"City {i}");
176221
}
177222

223+
table.SetFooters("Footer 1", "Footer 2", "Footer 3");
224+
178225
Console.WriteLine(table.ToString());
179226
Console.WriteLine();
180227
}
@@ -191,6 +238,7 @@ private static void WriteTableFluent()
191238
new string[] { "Bob", "25", "Los Angeles" },
192239
new string[] { "Charlie Brown", "47", "Chicago" }
193240
)
241+
.SetFooters("Total: 3", "Total Age: 102")
194242
.ToTable();
195243

196244
Console.WriteLine(tableString);
@@ -230,6 +278,13 @@ private static void WriteBigTable()
230278
}
231279
table.Rows = rows;
232280

281+
var footers = new List<string>();
282+
for (var columnPos = 1; columnPos <= columnCount; columnPos++)
283+
{
284+
footers.Add($"Footer {columnPos}");
285+
}
286+
table.Footers = footers.ToArray();
287+
233288
var tableString = table.ToTable();
234289

235290
Console.WriteLine(tableString);

ConsoleTable.Text/ConsoleTable.Text.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55

66
<!-- NuGet Package Metadata -->
77
<PackageId>ConsoleTable.Text</PackageId>
8-
<Version>1.0.3</Version>
8+
<Version>2.0.0</Version>
99
<Authors>Bruno Van Thournout</Authors>
10-
<Description>A library for creating a formatted string tables with customizable headers, rows, and alignment options.</Description>
10+
<Description>A library for creating a formatted string table with customizable headers, footers, rows and easy to use styling options.</Description>
1111
<PackageProjectUrl>https://github.com/BrunoVT1992/ConsoleTable</PackageProjectUrl>
1212
<RepositoryUrl>https://github.com/BrunoVT1992/ConsoleTable</RepositoryUrl>
1313
<RepositoryType>git</RepositoryType>
14-
<PackageTags>console;table;formatting;cli</PackageTags>
14+
<PackageTags>console;table;tables;consoletable;consoletables;console-table;texttable;text-table;output;format;formatting;cli;string;text;ct;fluent;grid</PackageTags>
1515
<PackageLicenseExpression>MPL-2.0</PackageLicenseExpression>
1616
<PackageReadmeFile>README.md</PackageReadmeFile>
1717
</PropertyGroup>

0 commit comments

Comments
 (0)