Creare un menu console in Kotlin con JLine
JLine è una libreria per Java per la creazione di un menu console.
Ha diverse opzioni e non è difficile da usare.
In questo articolo vediamo un esempio basico.
Se usate Maven potete installarla aggiungendo questa dipendenza:
<dependency>
<groupId>org.jline</groupId>
<artifactId>jline</artifactId>
<version>3.3.1</version>
</dependency>
Qui sotto un pò di codice:
package com.test
import org.jline.reader.*;
import org.jline.reader.impl.DefaultParser;
import org.jline.reader.impl.completer.StringsCompleter;
import org.jline.reader.impl.history.DefaultHistory;
import org.jline.terminal.TerminalBuilder;
import java.io.IOException;
fun main() {
try {
TerminalBuilder.builder().system(true).build().use { terminal ->
val completer: Completer = StringsCompleter("help", "hello", "exit")
val reader: LineReader = LineReaderBuilder.builder()
.terminal(terminal)
.parser(DefaultParser())
.completer(completer)
.history(DefaultHistory())
.build()
terminal.writer().println("Test di JLine!")
terminal.writer().println("Scrivi 'help' per visualizzare i comandi disponibili.")
terminal.writer().println("")
while (true) {
var line: String?
try {
line = reader.readLine("Scrivi comando> ")
} catch (e: UserInterruptException) {
break
} catch (e: EndOfFileException) {
break
}
if (line == null) {
continue
}
line = line.trim { it <= ' ' }
when (line) {
"help" -> terminal.writer().println("Comandi: help, print, exit")
"print" -> terminal.writer().println("Ciao da JLine!")
"exit" -> {
terminal.writer().println("Uscita...")
return
}
else -> terminal.writer().println("Comando inesistente: " + line)
}
terminal.flush()
}
}
} catch (e: IOException) {
println(e.message)
}
}
Enjoy!
kotlin maven jline
Commentami!