@@ -10,12 +10,14 @@ final class Table with Tools implements Component {
10
10
final List <List <String >> data;
11
11
final List <String > columns;
12
12
final bool lineSeparator;
13
+ final bool columnSeparator;
13
14
14
15
/// Creates a new instance of [Table] .
15
16
Table ({
16
17
this .data = const [],
17
18
this .columns = const [],
18
19
this .lineSeparator = false ,
20
+ this .columnSeparator = false ,
19
21
}) {
20
22
render ();
21
23
}
@@ -25,16 +27,19 @@ final class Table with Tools implements Component {
25
27
26
28
final buffer = StringBuffer ();
27
29
28
- _drawLineSeparator (buffer, left: 'β' , middle: 'β¬' , right: 'β' , separator: 'β' );
30
+ _drawLineSeparator (buffer,
31
+ left: 'β' , middle: columnSeparator ? 'β¬' : 'β' , right: 'β' , separator: 'β' );
29
32
_drawHeader (buffer);
30
- _drawLineSeparator (buffer, left: 'β' , middle: 'βΌ' , right: 'β€' , separator: 'β' );
33
+ _drawLineSeparator (buffer,
34
+ left: 'β' , middle: columnSeparator ? 'βΌ' : 'β' , right: 'β€' , separator: 'β' );
31
35
32
36
for (var row in data) {
33
37
final currentIndex = data.indexOf (row);
34
38
_drawLine (buffer, currentIndex, row);
35
39
}
36
40
37
- _drawLineSeparator (buffer, left: 'β' , middle: 'β΄' , right: 'β' , separator: 'β' );
41
+ _drawLineSeparator (buffer,
42
+ left: 'β' , middle: columnSeparator ? 'β΄' : 'β' , right: 'β' , separator: 'β' );
38
43
39
44
clearFromCursorToEnd ();
40
45
restoreCursorPosition ();
@@ -74,6 +79,7 @@ final class Table with Tools implements Component {
74
79
String line = left;
75
80
for (int i = 0 ; i < maxColWidths.length; i++ ) {
76
81
final isLast = i == maxColWidths.length - 1 ;
82
+
77
83
line += separator * (maxColWidths[i] + 2 );
78
84
line += isLast ? right : middle;
79
85
}
@@ -87,14 +93,18 @@ final class Table with Tools implements Component {
87
93
88
94
headerBuffer.write ('β' );
89
95
90
-
91
96
for (var i = 0 ; i < columns.length; i++ ) {
92
97
headerBuffer.writeAnsiAll ([
93
98
SetStyles (Style .bold),
94
99
Print (' ${columns [i ].padRight (maxColWidths [i ])}' ),
95
100
SetStyles .reset,
96
- Print (' β' ),
97
101
]);
102
+
103
+ if (i == columns.length - 1 ) {
104
+ headerBuffer.writeAnsi (Print (' β' ));
105
+ } else {
106
+ headerBuffer.writeAnsi (Print (columnSeparator ? ' β' : ' ' ));
107
+ }
98
108
}
99
109
100
110
buffer.writeln (headerBuffer.toString ());
@@ -104,13 +114,20 @@ final class Table with Tools implements Component {
104
114
final maxColWidths = getMaxCellWidths ();
105
115
106
116
if (! [0 , data.length].contains (currentIndex) && lineSeparator) {
107
- _drawLineSeparator (buffer, left: 'β' , middle: 'βΌ' , right: 'β€' , separator: 'β' );
117
+ _drawLineSeparator (buffer, left: 'β' , middle: lineSeparator ? columnSeparator ? 'βΌ' : 'β' : 'βΌ' , right: 'β€' , separator: 'β' );
108
118
}
109
119
110
120
String rowLine = 'β' ;
111
- for (var col = 0 ; col < columns.length; col++ ) {
112
- rowLine += ' ${row [col ].padRight (maxColWidths [col ])}' ;
113
- rowLine += ' β' ;
121
+ for (var i = 0 ; i < columns.length; i++ ) {
122
+ rowLine += ' ${row [i ].padRight (maxColWidths [i ])}' ;
123
+
124
+ if (i == columns.length - 1 ) {
125
+ // headerBuffer.writeAnsi(Print(' β'));
126
+ rowLine += ' β' ;
127
+ } else {
128
+ // headerBuffer.writeAnsi(Print(columnSeparator ? ' β' : ' '));
129
+ rowLine += columnSeparator ? ' β' : ' ' ;
130
+ }
114
131
}
115
132
116
133
buffer.writeln (rowLine);
0 commit comments