我正在使用Kwalify进行架构验证。 YAML文档的一部分实际上确实希望允许映射中某种类型的键名。
我看到Kwalify支持映射中值的正则表达式,但我没有看到在映射中使用 keys 中的正则表达式的支持。以下是我要支持验证的内容:
test-element:
sub-element-1: test
sub-element-2:
element-with-pattern-1: test1
element-with-pattern-2: test2
所以我不知道一些关键名称会提前完成(这里显示假名“element-with-pattern- *”,但我知道它们应该对应于正则表达式定义的模式
这可以使用Kwalify进行验证吗?
答案 0 :(得分:4)
要检查一下:
parent_key:
random_key1: url1
random_key2: url2
你应该使用"默认映射",这里是架构示例:
type: map
mapping:
"parent_key":
type: map
mapping:
"=":
type: str
http://www.kuwata-lab.com/kwalify/ruby/users-guide.02.html#tips-default
答案 1 :(得分:1)
鉴于代码的当前状态,我认为不可能。
我实际上处于类似的情况,我发现(困难的方式)在Kwalify环境中的验证效果不佳。我已经开始从灵活的密钥名称迁移到我可以专门定义模式的范例。
例如,我迁移了这个:
parent_key:
random_key1: url1
random_key2: url2
要:
parent_key:
- name: random_key1
url: url1
- name: random_key2
url: url2
使用后一种语法,您可以像这样验证:
"parent_key":
type: seq
sequence:
- type: map
mapping:
"name":
type: str
required: yes
"url":
type: str
required: yes
在该上下文中,您可以向pattern
或name
添加url
正则表达式验证程序,以便您实现目标。