5
我使用YAML作为Python项目的配置文件格式。为什么这不是Rx的有效模式?
最近我发现Rx是唯一可用于Python和YAML的模式验证程序。 : -/Kwalify适用于YAML,但仅适用于Ruby和Java。 :(
我一直在阅读他们缺乏资料一整天,只是似乎无法写一个有效的模式来表示我的文件结构帮助
我有以下YAML配置文件:?
cmd:
exec: mycmd
aliases: [my, cmd]
filter:
sms: 'regex .*'
load:
exec: load
filter:
sms: 'load: .*$'
echo:
exec: echo %
我无法表示一个嵌套结构我想要的是最外层项目(cmd,load和echo,在这种情况下)是一个任意的字符串,它包含其他项目'exec'是一个固定的字符串和必需的项目;'别名'和'过滤器'也是固定的,但应该是可选的。用Rx代表这个?
到目前为止,我有以下模式(在YAML),它的Rx无法编译:
type: //rec
required:
type: //rec
required:
exec: //str
optional:
aliases:
type: //arr
contents: //str
length: {min: 1, max: 10}
filter:
type: //rec
optional:
sms: //str
email: //str
all: //str
测试这在IPython中给了我这样的:
/Rx.py in make_schema(self, schema)
68 raise Error('invalid schema argument to make_schema')
69
---> 70 uri = self.expand_uri(schema["type"])
71
72 if not self.type_registry.get(uri): raise "unknown type %s" % uri
KeyError: 'type'
这使我相信我'm没有在某处指定“类型”。 :-S
任何想法?
我很累这场战斗...有没有其他的方式可以写一个模式,并用它来验证我的配置文件?
由于提前,
伊凡
是的,这工作!我从来没有想过用这种方式使用//地图;过于专注于// rec类型。 Rx的作者Ricardo Signes向我发送了一个有帮助的回应,我想我会与任何可能在未来出现类似问题的人分享一个小窍门:http://pastebin.com/ f13421133。我希望他不介意我这样做。 谢谢你的回答,丹尼尔!你救了我的一天! :D – imiric 2009-06-30 16:04:44