所以,我知道我可以做这样的事情:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist: *sites
并且具有sitelist
和anotherlist
都包含www.foo.com
和www.bar.com
。不过,我真正想要的是anotherlist
对还包含www.baz.com
,而无需重复www.foo.com
和www.baz.com
。
这样做使我在YAML解析器中出现语法错误:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist: *sites
- www.baz.com
仅使用锚和别名似乎不可能在不添加另一级子结构的情况下完成我想要的事情,例如:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist:
- *sites
- www.baz.com
这意味着此YAML文件的使用者必须了解它。
有没有做这种事情的纯YAML方法?还是我必须使用某些YAML后处理,例如实现变量替换或某些子结构的自动提升?我已经在进行这种后处理来处理其他两个用例,因此我并不完全反对。但是我的YAML文件将由人类编写,而不是由机器生成,因此我想尽量减少用户在标准YAML语法基础上需要记住的规则数量。
我还想对地图做类似的事情:
namedsites: &sites
Foo: www.foo.com
Bar: www.bar.com
moresites: *sites
Baz: www.baz.com
我通过YAML规范进行了搜索,但找不到任何内容,因此我怀疑答案只是“不,你不能这样做”。但是,如果有人有什么好主意。
编辑:由于没有答案,我假设没有人发现我在YAML规范中没有的任何东西,而这不能在YAML层完成。因此,我正在提出一个问题,以便对YAML进行后处理以帮助解决此问题,以防将来有人发现此问题。