继承yml并添加或更新现有块

时间:2016-01-20 10:58:21

标签: inheritance yaml

我有yml

# test.yml
- name: test
  prop1: val1
  nested-prop:
     - val2
     - val3

现在我想添加另一个块并更新现有的nested-prop块,因此结局输出可能如下所示。

# test.yml
- name: test
  prop1: val1
  nested-prop:
     - val2
     - val3
     - val4
  prop2: val5

val4块中添加nested-prop并在底部添加prop2: val5

我们可以在没有pyyaml或其他任何编程模块的情况下实现这一目标。仅使用yaml语法?

1 个答案:

答案 0 :(得分:2)

不,只有YAML无法做到这一点。无法将项目合并到您想要使用val4的序列中。

使用别名(&foo)和锚点(*foo), 可以将一个映射合并到另一个映射中:

my-alias: &my-alias
  prop2: val5

data:
  - name: test
    prop1: val1
    nested-prop:
      - val2
      - val3
    <<: *my-alias

这将产生一个等同于以下内容的数据结构:

my-alias:
  prop2: val5

data:
  - name: test
    prop1: val1
    nested-prop:
      - val2
      - val3
    prop2: val5

请注意,YAML中的映射是无序的,因此prop2键不能保证“在底部”(因为映射是无序的,没有“底部”)。