fun buildTable()

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()
    }