有没有一种方法可以覆盖Vorpal模式退出命令

Is there a way to override the Vorpal mode exit command?

本文关键字:覆盖 Vorpal 模式 命令 退出 方法 一种 有没有      更新时间:2023-09-26

我使用Vorpal mode来允许用户键入文本,稍后我会对其进行解析(我找不到使用常规command的方法,因为我无法提前考虑所有文本)。当用户键入exit时,他就退出了模式。我希望它是一个不同的字符串,或者可能是一个额外的字符串(比如quitend)。

有没有一种方法可以覆盖exit命令,或者如果没有,当用户提供某个字符串时,我自己触发它?

示例代码:
下面是一个实现反向波兰符号计算器的练习。如果你看一下handleInput函数(第47行),你会发现我不得不手动处理q字符串并终止进程——我只想让它表现得像模式的exit命令(第74行附近的某个地方)。

目前还没有办法做到这一点,但您可以在Github上提交一个问题,将其添加为增强功能,因为这是一个好主意。

但是,看起来catch命令可能更符合您的要求。这接受任何任意命令,而不处于"模式"。


更新

在查看您的代码时,看起来catch可以做到这一点。类似这样的东西:

vorpal
  .catch('[input...]')
  .action(function (args, cb) {
    handleInput(args.input.join(' '), cb);
  });

在上面的示例中,应用程序一启动,就好像您已经处于"模式"中。任何与预定义命令(如exit)不匹配的命令都将调用catch方法,并且它可以通过接受可变参数并将其连接来表现为一种模式。

这有道理吗?