formatTable static method
Formats a list of RouteData as an aligned ASCII table.
Implementation
static String formatTable(List<RouteData> routes) {
if (routes.isEmpty) {
return 'No registered routes found.';
}
const headers = ['METHOD', 'PATH', 'NAME', 'HANDLER'];
var maxMethod = headers[0].length;
var maxPath = headers[1].length;
var maxName = headers[2].length;
var maxHandler = headers[3].length;
for (final r in routes) {
if (r.method.length > maxMethod) maxMethod = r.method.length;
if (r.path.length > maxPath) maxPath = r.path.length;
final nameLen = (r.name ?? '-').length;
if (nameLen > maxName) maxName = nameLen;
final handlerLen = r.displayHandler.length;
if (handlerLen > maxHandler) maxHandler = handlerLen;
}
final buffer = StringBuffer();
final headerLine = '${headers[0].padRight(maxMethod + 3)}'
'${headers[1].padRight(maxPath + 3)}'
'${headers[2].padRight(maxName + 3)}'
'${headers[3]}';
buffer.writeln(headerLine);
for (final r in routes) {
final methodStr = r.method.padRight(maxMethod + 3);
final pathStr = r.path.padRight(maxPath + 3);
final nameStr = (r.name ?? '-').padRight(maxName + 3);
final handlerStr = r.displayHandler;
buffer.writeln('$methodStr$pathStr$nameStr$handlerStr');
}
return buffer.toString().trimRight();
}