相关疑难解决方法(0)

是否有YAML语法用于共享列表或地图的一部分?

所以,我知道我可以这样做:

sitelist: &sites
  - www.foo.com
  - www.bar.com

anotherlist: *sites
Run Code Online (Sandbox Code Playgroud)

并拥有sitelistanotherlist都包含www.foo.comwww.bar.com.不过,我真正想要的是anotherlist包含www.baz.com,而无需重复www.foo.comwww.baz.com.

这样做会在YAML解析器中出现语法错误:

sitelist: &sites
  - www.foo.com
  - www.bar.com

anotherlist: *sites
  - www.baz.com
Run Code Online (Sandbox Code Playgroud)

只使用锚和别名,似乎不可能做我想要的而不添加另一级子结构,例如:

sitelist: &sites
  - www.foo.com
  - www.bar.com

anotherlist:
  - *sites
  - www.baz.com
Run Code Online (Sandbox Code Playgroud)

这意味着此YAML文件的使用者必须了解它.

有一种纯粹的YAML方式做这样的事情吗?或者我是否必须使用一些后YAML处理,例如实现变量替换或自动提升某些类型的子结构?我已经在进行那种后处理来处理其他一些用例,所以我并不完全厌恶它.但我的YAML文件将由人类编写,而不是由机器生成,因此我希望尽量减少用户在标准YAML语法之上需要记忆的规则数量.

我也希望能够用地图做类似的事情:

namedsites: &sites
  Foo: www.foo.com
  Bar: www.bar.com

moresites: *sites
  Baz: www.baz.com
Run Code Online (Sandbox Code Playgroud)

我有一个搜索YAML规范,但找不到任何东西,所以我怀疑答案只是"不,你不能这样做".但是,如果有人有任何想法会很棒.


编辑:由于没有答案,我假设没有人发现我在YAML规范中没有的任何东西,并且这不能在YAML层完成.所以我打开了一个问题,想要对YAML进行后处理以帮助解决这个问题,以防将来有人发现这个问题.

arrays dictionary yaml cross-reference

81
推荐指数
5
解决办法
5万
查看次数

如何合并YAML数组?

我想在YAML中合并数组,并通过ruby加载它们 -

some_stuff: &some_stuff
 - a
 - b
 - c

combined_stuff:
  <<: *some_stuff
  - d
  - e
  - f
Run Code Online (Sandbox Code Playgroud)

我想将组合数组作为 [a,b,c,d,e,f]

我收到错误:在解析块映射时没有找到预期的键

如何在YAML中合并数组?

yaml list data-structures

79
推荐指数
4
解决办法
3万
查看次数

有没有办法在YAML中对数组进行别名/锚定?

我正在使用Jammit将资产打包为Rails应用程序,我有一些资产文件,我希望将其包含在几个组中.例如,我希望Sammy及其插件同时包含在我的mobilescreenJS包中.

我试过这个:

sammy: &SAMMY
  - public/javascripts/vendor/sammy.js
  - public/javascripts/vendor/sammy*.js

mobile:
  <<: *SAMMY
  - public/javascripts/something_else.js
Run Code Online (Sandbox Code Playgroud)

还有这个:

mobile:
  - *SAMMY
Run Code Online (Sandbox Code Playgroud)

但两者都把Sammy JS文件放在嵌套数组中,Jammit无法理解.是否有将Array的元素直接包含在另一个Array中的语法?

注意:我意识到在这种情况下,SAMMYArray 中只有两个元素,因此在每个包中给每个元素一个别名和引用都不会太糟糕.这种情况很好,但是当有五个或十个具有特定加载顺序的元素时,很快就无法维护.

yaml assets ruby-on-rails jammit

39
推荐指数
3
解决办法
2万
查看次数