从 TreeCompleter 获取 jline3 命令的集合
Obtaining the collection of jline3 commands from a 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 中,谢谢!
我认为这种方式不可能,因为 TreeCompleter
只是 RegexCompleter
周围的 wrapper 实际完成了这项工作。因此,如果您想收集此信息,您应该在将节点传递给 TreeCompleter
构造函数之前或可能在创建 TreeCompleter.Node
实例之前执行此操作,因为它们似乎不提供 public 访问器。一个明显的解决方案是使用您自己的内部 Node
class 在 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 中,谢谢!
我认为这种方式不可能,因为 TreeCompleter
只是 RegexCompleter
周围的 wrapper 实际完成了这项工作。因此,如果您想收集此信息,您应该在将节点传递给 TreeCompleter
构造函数之前或可能在创建 TreeCompleter.Node
实例之前执行此操作,因为它们似乎不提供 public 访问器。一个明显的解决方案是使用您自己的内部 Node
class 在 TreeCompleter
周围创建自己的包装器,以存储此信息供以后使用。