Jump to content

Align columns: Difference between revisions

Kotlin version enhanced
m (syntax coloring as VB)
(Kotlin version enhanced)
Line 2,116:
import java.nio.file.Files
import java.nio.file.Paths
import java.util.ArrayList
 
enum class Align_function {
LEFT {
override fun aligninvoke(s: String, length: Int) = ("%-" + length + 's').format(("%" + s.length() + 's').format(s))
},
RIGHT {
override fun aligninvoke(s: String, length: Int) = ("%-" + length + 's').format(("%" + length + 's').format(s))
},
CENTER {
override fun aligninvoke(s: String, length: Int) = ("%-" + length + 's').format(("%" + ((length + s.length()) / 2) + 's').format(s))
};
 
abstract operator fun aligninvoke(s: String, length: Int): String
}
 
Line 2,137 ⟶ 2,136:
*/
class Column_aligner(val lines: List<String>) {
operator fun aligninvoke(a: Align_function): String {
val result = StringBuilder()
for (lineWords in words) {
Line 2,143 ⟶ 2,142:
if (i == 0)
result.append('|')
result.append(a.align(lineWords[i], column_widths[i]))
result.append('|')
}
Line 2,151 ⟶ 2,150:
}
 
private val words = ArrayListarrayListOf<Array<String>>()
private val column_widths = ArrayListarrayListOf<Int>()
 
init {
Line 2,162 ⟶ 2,161:
column_widths += lineWords[i].length()
else
column_widths.set([i,] = Math.max(column_widths[i], lineWords[i].length()))
}
}
Line 2,174 ⟶ 2,173:
val alignment = if (args.size() >= 2) args[1] else "L"
when (alignment) {
"L" -> print(ca.align(Align_function.LEFT))
"R" -> print(ca.align(Align_function.RIGHT))
"C" -> print(ca.align(Align_function.CENTER))
else -> System.err.println("Error! Unknown alignment: " + alignment)
}
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.