table static method
void
table(})
Implementation
static void table(
List<String> headers,
List<List<String>> rows, {
String Function(int column, String value)? colorize,
}) {
if (rows.isEmpty) return;
final widths = List<int>.generate(headers.length, (column) {
return <String>[
headers[column],
for (final row in rows)
if (column < row.length) row[column],
].map((value) => value.length).reduce((a, b) => a > b ? a : b);
});
String render(List<String> cells, {bool header = false}) {
return List<String>.generate(headers.length, (column) {
final value = column < cells.length ? cells[column] : '';
final padded = value.padRight(widths[column]);
if (header) return bold(padded);
return colorize?.call(column, padded) ?? padded;
}).join(' ').trimRight();
}
line(render(headers, header: true));
line(dim(widths.map((width) => '─' * width).join(' ')));
for (final row in rows) {
line(render(row));
}
}