Получение коллекции команд jline3 из TreeCompleter

У меня есть TreeCompleter (Код Scala), который работает как ожидалось:

val treeCompleter = new TreeCompleter(
    node("bindkey"),
    node("cls"),
    node(
      "custom",
      node("Option1", node("Param1", "Param2")),
      node("Option2"),
      node("Option3")
    ),
    node("help"),
    node("set"),
    node("testkey"),
    node("tput")
)

Как я могу получить коллекцию имен команд? Для этого примера эти имена: bindkey, cls, custom, help, set, testkey а также tput,

Проект GitHub, который содержит вышеуказанный код, находится здесь: https://github.com/mslinn/jline-example/blob/master/src/main/scala/CliLoop.scala

Мне все равно, если ответ на Java или Scala, спасибо!

1 ответ

Решение

Я не думаю, что это возможно, учитывая, что TreeCompleter это просто обертка вокруг RegexCompleter это на самом деле делает работу. Поэтому, если вы хотите собрать эту информацию, вы должны сделать это, прежде чем передать свои узлы TreeCompleter конструктор или, возможно, прежде чем создавать TreeCompleter.Node случаи, потому что они, кажется, не предоставляют общедоступные средства доступа. Одним из очевидных решений было бы создать свою собственную обертку вокруг TreeCompleter с вашим собственным внутренним Node класс, который будет хранить эту информацию для последующего использования.

Другие вопросы по тегам