1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
|
#![cfg(feature = "macros")]
#![cfg(feature = "std")]
use tabled::{
col, row,
settings::{format::Format, object::Segment, Alignment, Modify, Padding},
};
use crate::matrix::Matrix;
use testing_table::test_table;
test_table!(
row_pair_test,
row!(
Matrix::new(3, 3)
.with(Modify::new(Segment::all()).with(Alignment::left()))
.with(Modify::new(Segment::all()).with(Padding::new(3, 1, 0, 0)))
.with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]")))),
Matrix::new(4, 4)
.with(Modify::new(Segment::all()).with(Alignment::right()))
.with(Modify::new(Segment::all()).with(Padding::new(1, 1, 1, 1)))
.with(Modify::new(Segment::all()).with(Format::content(|s| format!("({s})")))),
),
"+--------------------------------------------------------+-------------------------------------------------------------+"
"| +-------+--------------+--------------+--------------+ | +-----+------------+------------+------------+------------+ |"
"| | [N] | [column 0] | [column 1] | [column 2] | | | | | | | | |"
"| +-------+--------------+--------------+--------------+ | | (N) | (column 0) | (column 1) | (column 2) | (column 3) | |"
"| | [0] | [0-0] | [0-1] | [0-2] | | | | | | | | |"
"| +-------+--------------+--------------+--------------+ | +-----+------------+------------+------------+------------+ |"
"| | [1] | [1-0] | [1-1] | [1-2] | | | | | | | | |"
"| +-------+--------------+--------------+--------------+ | | (0) | (0-0) | (0-1) | (0-2) | (0-3) | |"
"| | [2] | [2-0] | [2-1] | [2-2] | | | | | | | | |"
"| +-------+--------------+--------------+--------------+ | +-----+------------+------------+------------+------------+ |"
"| | | | | | | | |"
"| | | (1) | (1-0) | (1-1) | (1-2) | (1-3) | |"
"| | | | | | | | |"
"| | +-----+------------+------------+------------+------------+ |"
"| | | | | | | | |"
"| | | (2) | (2-0) | (2-1) | (2-2) | (2-3) | |"
"| | | | | | | | |"
"| | +-----+------------+------------+------------+------------+ |"
"| | | | | | | | |"
"| | | (3) | (3-0) | (3-1) | (3-2) | (3-3) | |"
"| | | | | | | | |"
"| | +-----+------------+------------+------------+------------+ |"
"+--------------------------------------------------------+-------------------------------------------------------------+"
);
test_table!(
col_pair_test,
col!(
Matrix::new(3, 3)
.with(Modify::new(Segment::all()).with(Alignment::left()))
.with(Modify::new(Segment::all()).with(Padding::new(3, 1, 0, 0)))
.with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]")))),
Matrix::new(4, 4)
.with(Modify::new(Segment::all()).with(Alignment::right()))
.with(Modify::new(Segment::all()).with(Padding::new(1, 1, 1, 1)))
.with(Modify::new(Segment::all()).with(Format::content(|s| format!("({s})")))),
),
"+-------------------------------------------------------------+"
"| +-------+--------------+--------------+--------------+ |"
"| | [N] | [column 0] | [column 1] | [column 2] | |"
"| +-------+--------------+--------------+--------------+ |"
"| | [0] | [0-0] | [0-1] | [0-2] | |"
"| +-------+--------------+--------------+--------------+ |"
"| | [1] | [1-0] | [1-1] | [1-2] | |"
"| +-------+--------------+--------------+--------------+ |"
"| | [2] | [2-0] | [2-1] | [2-2] | |"
"| +-------+--------------+--------------+--------------+ |"
"+-------------------------------------------------------------+"
"| +-----+------------+------------+------------+------------+ |"
"| | | | | | | |"
"| | (N) | (column 0) | (column 1) | (column 2) | (column 3) | |"
"| | | | | | | |"
"| +-----+------------+------------+------------+------------+ |"
"| | | | | | | |"
"| | (0) | (0-0) | (0-1) | (0-2) | (0-3) | |"
"| | | | | | | |"
"| +-----+------------+------------+------------+------------+ |"
"| | | | | | | |"
"| | (1) | (1-0) | (1-1) | (1-2) | (1-3) | |"
"| | | | | | | |"
"| +-----+------------+------------+------------+------------+ |"
"| | | | | | | |"
"| | (2) | (2-0) | (2-1) | (2-2) | (2-3) | |"
"| | | | | | | |"
"| +-----+------------+------------+------------+------------+ |"
"| | | | | | | |"
"| | (3) | (3-0) | (3-1) | (3-2) | (3-3) | |"
"| | | | | | | |"
"| +-----+------------+------------+------------+------------+ |"
"+-------------------------------------------------------------+"
);
test_table!(
row_duplication_test,
row!(
Matrix::new(3, 3)
.with(Modify::new(Segment::all()).with(Alignment::left()))
.with(Modify::new(Segment::all()).with(Padding::new(3, 1, 0, 0)))
.with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]"))));
3
),
"+--------------------------------------------------------+--------------------------------------------------------+--------------------------------------------------------+"
"| +-------+--------------+--------------+--------------+ | +-------+--------------+--------------+--------------+ | +-------+--------------+--------------+--------------+ |"
"| | [N] | [column 0] | [column 1] | [column 2] | | | [N] | [column 0] | [column 1] | [column 2] | | | [N] | [column 0] | [column 1] | [column 2] | |"
"| +-------+--------------+--------------+--------------+ | +-------+--------------+--------------+--------------+ | +-------+--------------+--------------+--------------+ |"
"| | [0] | [0-0] | [0-1] | [0-2] | | | [0] | [0-0] | [0-1] | [0-2] | | | [0] | [0-0] | [0-1] | [0-2] | |"
"| +-------+--------------+--------------+--------------+ | +-------+--------------+--------------+--------------+ | +-------+--------------+--------------+--------------+ |"
"| | [1] | [1-0] | [1-1] | [1-2] | | | [1] | [1-0] | [1-1] | [1-2] | | | [1] | [1-0] | [1-1] | [1-2] | |"
"| +-------+--------------+--------------+--------------+ | +-------+--------------+--------------+--------------+ | +-------+--------------+--------------+--------------+ |"
"| | [2] | [2-0] | [2-1] | [2-2] | | | [2] | [2-0] | [2-1] | [2-2] | | | [2] | [2-0] | [2-1] | [2-2] | |"
"| +-------+--------------+--------------+--------------+ | +-------+--------------+--------------+--------------+ | +-------+--------------+--------------+--------------+ |"
"+--------------------------------------------------------+--------------------------------------------------------+--------------------------------------------------------+"
);
test_table!(
col_and_rows_test,
col!(
row!(
Matrix::new(3, 3)
.with(Modify::new(Segment::all()).with(Alignment::left()))
.with(Modify::new(Segment::all()).with(Padding::new(3, 1, 0, 0)))
.with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]")))),
Matrix::new(4, 4)
.with(Modify::new(Segment::all()).with(Alignment::right()))
.with(Modify::new(Segment::all()).with(Padding::new(1, 1, 1, 1)))
.with(Modify::new(Segment::all()).with(Format::content(|s| format!("({s})")))),
),
Matrix::new(3, 5)
.with(Modify::new(Segment::all()).with(Alignment::left()))
.with(Modify::new(Segment::all()).with(Padding::new(2, 2, 0, 0)))
.with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]")))),
),
"+--------------------------------------------------------------------------------------------------------------------------+"
"| +--------------------------------------------------------+-------------------------------------------------------------+ |"
"| | +-------+--------------+--------------+--------------+ | +-----+------------+------------+------------+------------+ | |"
"| | | [N] | [column 0] | [column 1] | [column 2] | | | | | | | | | |"
"| | +-------+--------------+--------------+--------------+ | | (N) | (column 0) | (column 1) | (column 2) | (column 3) | | |"
"| | | [0] | [0-0] | [0-1] | [0-2] | | | | | | | | | |"
"| | +-------+--------------+--------------+--------------+ | +-----+------------+------------+------------+------------+ | |"
"| | | [1] | [1-0] | [1-1] | [1-2] | | | | | | | | | |"
"| | +-------+--------------+--------------+--------------+ | | (0) | (0-0) | (0-1) | (0-2) | (0-3) | | |"
"| | | [2] | [2-0] | [2-1] | [2-2] | | | | | | | | | |"
"| | +-------+--------------+--------------+--------------+ | +-----+------------+------------+------------+------------+ | |"
"| | | | | | | | | | |"
"| | | | (1) | (1-0) | (1-1) | (1-2) | (1-3) | | |"
"| | | | | | | | | | |"
"| | | +-----+------------+------------+------------+------------+ | |"
"| | | | | | | | | | |"
"| | | | (2) | (2-0) | (2-1) | (2-2) | (2-3) | | |"
"| | | | | | | | | | |"
"| | | +-----+------------+------------+------------+------------+ | |"
"| | | | | | | | | | |"
"| | | | (3) | (3-0) | (3-1) | (3-2) | (3-3) | | |"
"| | | | | | | | | | |"
"| | | +-----+------------+------------+------------+------------+ | |"
"| +--------------------------------------------------------+-------------------------------------------------------------+ |"
"+--------------------------------------------------------------------------------------------------------------------------+"
"| +-------+--------------+--------------+--------------+--------------+--------------+ |"
"| | [N] | [column 0] | [column 1] | [column 2] | [column 3] | [column 4] | |"
"| +-------+--------------+--------------+--------------+--------------+--------------+ |"
"| | [0] | [0-0] | [0-1] | [0-2] | [0-3] | [0-4] | |"
"| +-------+--------------+--------------+--------------+--------------+--------------+ |"
"| | [1] | [1-0] | [1-1] | [1-2] | [1-3] | [1-4] | |"
"| +-------+--------------+--------------+--------------+--------------+--------------+ |"
"| | [2] | [2-0] | [2-1] | [2-2] | [2-3] | [2-4] | |"
"| +-------+--------------+--------------+--------------+--------------+--------------+ |"
"+--------------------------------------------------------------------------------------------------------------------------+"
);
test_table!(
row_and_col_test,
row!(
col!(
Matrix::new(3, 3)
.with(Modify::new(Segment::all()).with(Alignment::left()))
.with(Modify::new(Segment::all()).with(Padding::new(3, 1, 0, 0)))
.with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]")))),
Matrix::new(4, 4)
.with(Modify::new(Segment::all()).with(Alignment::right()))
.with(Modify::new(Segment::all()).with(Padding::new(1, 1, 1, 1)))
.with(Modify::new(Segment::all()).with(Format::content(|s| format!("({s})")))),
),
Matrix::new(3, 5)
.with(Modify::new(Segment::all()).with(Alignment::left()))
.with(Modify::new(Segment::all()).with(Padding::new(2, 2, 0, 0)))
.with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]")))),
),
"+-----------------------------------------------------------------+--------------------------------------------------------------------------------------+"
"| +-------------------------------------------------------------+ | +-------+--------------+--------------+--------------+--------------+--------------+ |"
"| | +-------+--------------+--------------+--------------+ | | | [N] | [column 0] | [column 1] | [column 2] | [column 3] | [column 4] | |"
"| | | [N] | [column 0] | [column 1] | [column 2] | | | +-------+--------------+--------------+--------------+--------------+--------------+ |"
"| | +-------+--------------+--------------+--------------+ | | | [0] | [0-0] | [0-1] | [0-2] | [0-3] | [0-4] | |"
"| | | [0] | [0-0] | [0-1] | [0-2] | | | +-------+--------------+--------------+--------------+--------------+--------------+ |"
"| | +-------+--------------+--------------+--------------+ | | | [1] | [1-0] | [1-1] | [1-2] | [1-3] | [1-4] | |"
"| | | [1] | [1-0] | [1-1] | [1-2] | | | +-------+--------------+--------------+--------------+--------------+--------------+ |"
"| | +-------+--------------+--------------+--------------+ | | | [2] | [2-0] | [2-1] | [2-2] | [2-3] | [2-4] | |"
"| | | [2] | [2-0] | [2-1] | [2-2] | | | +-------+--------------+--------------+--------------+--------------+--------------+ |"
"| | +-------+--------------+--------------+--------------+ | | |"
"| +-------------------------------------------------------------+ | |"
"| | +-----+------------+------------+------------+------------+ | | |"
"| | | | | | | | | | |"
"| | | (N) | (column 0) | (column 1) | (column 2) | (column 3) | | | |"
"| | | | | | | | | | |"
"| | +-----+------------+------------+------------+------------+ | | |"
"| | | | | | | | | | |"
"| | | (0) | (0-0) | (0-1) | (0-2) | (0-3) | | | |"
"| | | | | | | | | | |"
"| | +-----+------------+------------+------------+------------+ | | |"
"| | | | | | | | | | |"
"| | | (1) | (1-0) | (1-1) | (1-2) | (1-3) | | | |"
"| | | | | | | | | | |"
"| | +-----+------------+------------+------------+------------+ | | |"
"| | | | | | | | | | |"
"| | | (2) | (2-0) | (2-1) | (2-2) | (2-3) | | | |"
"| | | | | | | | | | |"
"| | +-----+------------+------------+------------+------------+ | | |"
"| | | | | | | | | | |"
"| | | (3) | (3-0) | (3-1) | (3-2) | (3-3) | | | |"
"| | | | | | | | | | |"
"| | +-----+------------+------------+------------+------------+ | | |"
"| +-------------------------------------------------------------+ | |"
"+-----------------------------------------------------------------+--------------------------------------------------------------------------------------+"
);
test_table!(
row_str_test,
row!("hello", "world"),
"+-------+-------+"
"| hello | world |"
"+-------+-------+"
);
test_table!(
row_str_duplication_test,
row!("duplicate me"; 5),
"+--------------+--------------+--------------+--------------+--------------+"
"| duplicate me | duplicate me | duplicate me | duplicate me | duplicate me |"
"+--------------+--------------+--------------+--------------+--------------+"
);
test_table!(
row_display_mixed_test,
row!("str", "string".to_string(), 55, false),
"+-----+--------+----+-------+"
"| str | string | 55 | false |"
"+-----+--------+----+-------+"
);
test_table!(
col_display_mixed_test,
col!("str", "string".to_string(), 55, false),
"+--------+"
"| str |"
"+--------+"
"| string |"
"+--------+"
"| 55 |"
"+--------+"
"| false |"
"+--------+"
);
|