有没有办法覆盖 Vorpal 模式退出命令?
Is there a way to override the Vorpal mode exit command?
我正在使用 Vorpal mode
来允许用户输入文本,稍后我会解析(我找不到使用常规 command
来完成此操作的方法,因为我可以'不要提前考虑所有文本)。当用户键入 exit
时,他将退出该模式。我希望它是一个不同的字符串 - 或者可能是一个额外的字符串(比如 quit
或 end
)。
有什么方法可以覆盖 exit
命令,或者失败时,当用户提供特定字符串时我自己触发它?
示例代码:
这是一个 exercise that implements a Reverse Polish Notation 计算器。如果您查看 handleInput
函数(第 47 行),您会发现我必须手动处理 q
字符串并终止进程 - 我想要它做的只是表现得像模式的exit
命令(第 74 行附近的某处)。
目前没有办法做到这一点,但是您可以file an issue on Github将其添加为增强功能,因为这是个好主意。
但是,it looks like the catch
command 可能更符合您的要求。这接受任意命令,而不是在 "mode".
中
更新
在查看您的代码时,catch
似乎可以解决问题。像这样:
vorpal
.catch('[input...]')
.action(function (args, cb) {
handleInput(args.input.join(' '), cb);
});
在上面的示例中,一旦应用程序启动,就好像您已经在 "mode" 中一样。任何与预定义命令(例如 exit
)不匹配的命令都将调用 catch 方法,并且它可以通过接受可变参数并加入它们来表现得像一个模式。
这有意义吗?
我正在使用 Vorpal mode
来允许用户输入文本,稍后我会解析(我找不到使用常规 command
来完成此操作的方法,因为我可以'不要提前考虑所有文本)。当用户键入 exit
时,他将退出该模式。我希望它是一个不同的字符串 - 或者可能是一个额外的字符串(比如 quit
或 end
)。
有什么方法可以覆盖 exit
命令,或者失败时,当用户提供特定字符串时我自己触发它?
示例代码:
这是一个 exercise that implements a Reverse Polish Notation 计算器。如果您查看 handleInput
函数(第 47 行),您会发现我必须手动处理 q
字符串并终止进程 - 我想要它做的只是表现得像模式的exit
命令(第 74 行附近的某处)。
目前没有办法做到这一点,但是您可以file an issue on Github将其添加为增强功能,因为这是个好主意。
但是,it looks like the catch
command 可能更符合您的要求。这接受任意命令,而不是在 "mode".
更新
在查看您的代码时,catch
似乎可以解决问题。像这样:
vorpal
.catch('[input...]')
.action(function (args, cb) {
handleInput(args.input.join(' '), cb);
});
在上面的示例中,一旦应用程序启动,就好像您已经在 "mode" 中一样。任何与预定义命令(例如 exit
)不匹配的命令都将调用 catch 方法,并且它可以通过接受可变参数并加入它们来表现得像一个模式。
这有意义吗?