renderProjection function
Aligned plain-text rendering for terminals.
Implementation
String renderProjection(CodemapProjection projection) {
final header =
'codemap lanes: ${projection.findings.length} declared; receipts '
'scanned=${projection.scanned} corrupt=${projection.corruptCount} '
'orphan=${projection.orphanCount}';
final rows = <List<String>>[
<String>['ID', 'TRIGGER', 'FINDING', 'AGE', 'NOTE'],
for (final finding in projection.findings)
<String>[
finding.id,
finding.trigger,
finding.code,
if (finding.ageS == null) '-' else _humanAge(finding.ageS!),
finding.message,
],
];
final widths = <int>[
for (var column = 0; column < 5; column++)
rows.fold(
0,
(max, row) =>
row[column].length > max ? row[column].length : max,
),
];
return [
header,
for (final row in rows)
[
for (var column = 0; column < row.length; column++)
row[column].padRight(widths[column]),
].join(' ').trimRight(),
].join('\n');
}