从TreeCompleter获取jline3命令的集合

时间:2017-10-27 22:06:52

标签: java scala jline jline3

我有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")
)

如何获取命令名称集合?对于此示例,这些名称为:bindkeyclscustomhelpsettestkeytput

包含上述代码的github项目位于:https://github.com/mslinn/jline-example/blob/master/src/main/scala/CliLoop.scala

我不在乎答案是Java还是Scala,谢谢!

1 个答案:

答案 0 :(得分:0)

我认为这种方式不可能,因为TreeCompleter只是wrapper RegexCompleter实际完成工作。因此,如果要收集此信息,则应在将节点传递给TreeCompleter构造函数之前或在创建TreeCompleter.Node实例之前执行此操作,因为它们似乎不提供公共访问器。一个显而易见的解决方案是使用您自己的内部TreeCompleter类围绕Node创建自己的包装器,该类将存储此信息以供以后使用。