【发布时间】:2015-01-29 23:08:55
【问题描述】:
我有一个用例,用户提供一个文档字符串,并基于它生成一些代码。所以我不知道我前面的docopt字符串。
对于某些“参数类型”(不是数据类型),我希望生成各种代码。
下面,我将区分“类型”和“数据类型”。对于docopt参数--arg=DEGREES和argv输入--arg=10,--arg的“类型”是DEGREES,而数据类型是integer。值为10。
用户可以给我以下文档字符串:
Naval Fate.
Usage:
naval_fate --dir=FILE [--speed=ABC]
Options:
--dir=FILE Moored (anchored) mine.
--speed=ABC Speed in knots [default: 10].
除了像往常一样解析这个docopt字符串之外,我还试图弄清楚dir和speed要求的参数“类型”是什么。我想知道dir 的类型是FILE 而speed 的类型是ABC。
示例:
鉴于上面的docopt字符串和一个argv字符串naval_fate --dir=/tmp --speed 1234,我希望不仅可以访问值和数据类型(<key> => <value,datatype>),还可以访问“配置类型”(<key> => <value,datatype,argtype>,即类似的东西的:
dir => 值:/tmp,数据类型:String,类型:FILEspeed => 值:1234,数据类型:@987654344 @, 输入:ABC
docopt 的任何(托管)实现都是可以接受的,包括 Python 的,尽管我最好在编译语言中寻找解决方案,无论是 C、Go、Rust 等。
【问题讨论】:
-
你能添加更多你想要的例子吗?看来我可能误解了你的问题。
-
抱歉含糊不清。我已经编辑了我的问题,希望现在更清楚。
-
整洁的请求。 Rust 的 Docopt 确实将这些信息放在了地板上。不幸的是,我不知道是否有其他 Docopt 解析器可以使用它。我打开了一个新功能请求:github.com/docopt/docopt.rs/issues/88
-
干杯。我不相信向任何 docopt 解析器添加“非标准”功能是正确的方法,因为目标必须是让所有 docopt 解析器表现相同?也许某种允许用户遍历/检查解析的docopt文档的功能是正确的方法?无论如何,这可能是最好留给功能请求的讨论。
-
啊,没想到你是 rust docopt 库的作者。感谢您的出色工作 - 这是一个整洁的图书馆 :)