Kwalify YAML验证 - 在密钥名称中使用正则表达式?

时间:2013-10-20 05:37:08

标签: ruby validation yaml

我正在使用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进行验证吗?

2 个答案:

答案 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

在该上下文中,您可以向patternname添加url正则表达式验证程序,以便您实现目标。