我的用法:
Usage:
prog at (<v1> [<v1>]) [(before <v2>)] (alarm|email)
我的命令行args:
at 4 alarm
我似乎很清楚at
和alarm
的外观将模糊值[{1}}定位为4
或v1
。由于v2
始终由v2
引导,我们可以告诉before
是4
。
然而,它没有被解析。见我try it。
任何人都知道为什么它没有被解析,以及如何使用最小的用户更改来解析它?请注意,在使用中,我正在尝试实现更自然的语言类型的接口,因此重新排列语法可能有点困难。
编辑:
几次尝试:
(alarm|email)
part before
clause in the args 注意:在github上询问同样的问题:https://github.com/docopt/docopt/issues/412
答案 0 :(得分:0)
Docopt似乎不支持其他参数前面的可选参数,除非它们是选项。您尝试解析at 4 before alarm
表示before
被识别为<v1>
的第二个位置参数。
{
"<v1>": [
"4",
"before"
],
"<v2>": null,
"alarm": true,
"at": true,
"before": false,
"email": false
}
我建议将可选的位置参数移到最后。
Usage:
prog [options] (alarm|email) at <v1> [<v1>]
Options:
-b, --before <v2> Do something before