table method
Adds aligned columns with a dimmed header row.
Implementation
void table(List<String> headers, List<List<String>> rows) {
final List<int> widths = [
for (final String header in headers) header.length,
];
for (final List<String> row in rows) {
for (int i = 0; i < row.length && i < widths.length; i++) {
if (row[i].length > widths[i]) widths[i] = row[i].length;
}
}
String render(List<String> cells) {
final StringBuffer buffer = StringBuffer();
for (int i = 0; i < widths.length; i++) {
final String cell = i < cells.length ? cells[i] : '';
buffer.write(
i == widths.length - 1 ? cell : cell.padRight(widths[i] + 2),
);
}
return buffer.toString().trimRight();
}
_add(LiveTone.note, render(headers));
for (final List<String> row in rows) {
_add(LiveTone.plain, render(row));
}
}