Objective-C aligned plain-text table renderer
Objective-C
#import <Foundation/Foundation.h>
static NSString *RenderTable(NSArray<NSString *> *headers, NSArray<NSArray<NSString *> *> *rows) {
NSMutableArray<NSNumber *> *widths = [NSMutableArray array];
for (NSUInteger c = 0; c < headers.count; c++) {
NSUInteger width = headers[c].length;
for (NSArray<NSString *> *row in rows) width = MAX(width, row[c].length);
[widths addObject:@(width)];
}
NSMutableString *out = [NSMutableString string];
NSMutableArray *lines = [NSMutableArray arrayWithObject:headers];
[lines addObjectsFromArray:rows];
for (NSArray<NSString *> *cells in lines) {
NSMutableArray *padded = [NSMutableArray array];
for (NSUInteger c = 0; c < cells.count; c++) {
[padded addObject:[cells[c] stringByPaddingToLength:widths[c].unsignedIntegerValue withString:@" " startingAtIndex:0]];
}
[out appendFormat:@"%@%c", [padded componentsJoinedByString:@" | "], 10];
}
return out;
}