dumpTable static method
Implementation
static String dumpTable(Iterable rows) {
rows = _asList(rows);
var mapRows = _asListMap(rows as List<dynamic>);
var keys = _allKeys(mapRows);
var colSizes = <String, int>{};
for (var k in keys) {
var max = k.length;
for (var row in mapRows) {
var col = row![k];
if (col != null) {
var valSize = "$col".length;
if (valSize > max) {
max = valSize;
}
}
}
colSizes[k] = max;
}
// sum + ' padding ' + |
int rowWidth = colSizes.values.fold(0, (dynamic p, c) => p + c) +
(colSizes.length * 2) +
(colSizes.length + 1);
var sb = <String>[];
sb.add("+${'-' * (rowWidth - 2)}+");
var head = '|';
for (var k in keys) {
head += '${_alignCenter(k, colSizes[k]!)}|';
}
sb.add(head);
sb.add("|${'-' * (rowWidth - 2)}|");
for (var row in mapRows) {
var to = '|';
for (var k in keys) {
to += '${_alignAuto(row![k], colSizes[k]!)}|';
}
sb.add(to);
}
sb.add("+${'-' * (rowWidth - 2)}+");
return sb.join('\n');
}