in baseline-cli/src/main/kotlin/CommandLineTable.kt [19:41]
fun buildTable(): String {
val format = "%-${columnSize[0]}s " + columnSize.drop(1).joinToString(separator = " ") { "%${it}s" }
val tableHeader = String.format(format, *header.toTypedArray())
val result = StringBuilder()
result.appendLine("-".repeat(tableHeader.length))
result.appendLine(tableHeader)
result.appendLine("-".repeat(tableHeader.length))
for (row in rows) {
val splittedRow = row.mapIndexed { ind, s -> s.chunked(columnSize[ind]) }
val maxLinesCount = splittedRow.maxOf { it.size }
val alignedRow = splittedRow.map {
val difWithMax = maxLinesCount - it.size
List(difWithMax / 2) { "" } + it + List(difWithMax / 2 + difWithMax % 2) { "" }
}
for (i in 0 until maxLinesCount) {
result.appendLine(String.format(format, *(alignedRow.map { it[i] }.toTypedArray())))
}
}
result.appendLine("-".repeat(tableHeader.length))
return result.toString()
}