3

我正在使用 Kwalify 进行模式验证。YAML 文档的一部分实际上确实希望在映射中允许某种类型的键名。

我看到 Kwalify 支持映射中的的正则表达式,但我没有看到支持在映射中的中使用正则表达式的支持。这是我想支持验证的内容:

test-element:
  sub-element-1: test
  sub-element-2:
    element-with-pattern-1: test1
    element-with-pattern-2: test2

所以我不知道一些键名会是什么(这里用假名“element-with-pattern-*”显示,但我知道它们应该对应于正则表达式定义的模式。

是否可以使用 Kwalify 进行验证?

4

2 回答 2

5

要检查这一点:

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

于 2015-10-23T14:24:55.420 回答
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正则表达式验证器nameurl实现您的目标。

于 2014-12-19T00:04:48.433 回答