将YAML“锚点”与键

时间:2016-11-16 12:13:24

标签: ruby yaml

所以我想转此:

a:
  b: &b "hello"
  c: *b "world"

进入:{"a"=>{"b"=>"hello", "c"=>"hello world"}}

但是现在我得到did not find expected key while parsing a block mapping at line 2 column 3

我知道这很好用:

a:
  b: &b "hello"
  c: *b

(我从learnxinyminutes学习并尝试了一些%() %{} #{} ..语法,但没有一种方法有效)

1 个答案:

答案 0 :(得分:8)

YAML不是一种编程语言,并且通常不提供用于执行所需操作的工具。

但是,如果你真的想做这样的事情,没有什么阻碍你定义一些标记!concat并以一种让你做的方式实现它

a:
  b: &b "hello"
  c: !concat [*b, "world"]

重要的是:你需要在装载方面自己实现。这个想法不是太奇特了; !!merge标签有一个(非标准)定义,它与映射here做类似的事情,有些YAML实现支持它。但出于好的原因,它没有找到进入标准的方法。经验法则:如果你想做这样的事情,YAML可能不适合你。