2015-05-02 29 views
3

我爱YAML。是否有任何简化的YAML格式变得普遍?

等等,让我回来了。我爱YAML看起来像这样,甚至超过JSON:

Projects: 
    C/C++ Libraries: 
    - libyaml  # "C" Fast YAML 1.1 
    - Syck   # (dated) "C" YAML 1.0 
    - yaml-cpp  # C++ YAML 1.2 implementation 
    Ruby: 
    - psych   # libyaml wrapper (in Ruby core for 1.9.2) 
    - RbYaml  # YAML 1.1 (PyYaml Port) 
    - yaml4r  # YAML 1.0, standard library syck binding 
    ... 

我爱YAML锚和引用过,有时想JSON了他们。

但我希望我们大多数人都同意,下面是不是那么人类可读(我知道这个例子是说教,但问题是,因为它是有效YAML,你可以用你的污染数据的人合作这样的功能):

!!map { 
    ? !!str "sequence" 
    : !!seq [ !!str "one", !!str "two" ], 
    ? !!str "mapping" 
    : !!map { 
    ? !!str "sky" : !!str "blue", 
    ? !!str "sea" : !!str "green", 
    }, 
} 

所以我很失望,我无法找到任何普遍政变规范YAML的简化子集,至少有一个粗略的谷歌搜索。

有人知道吗?

回答

3

有很多这样的子集。几乎每个YAML库由从往返(装载YAML成内部数据和串行化数据返回给YAML)产生的格式定义一个隐含

你经常可以影响这些子集,但他们往往有较大的收藏和流式的较小的(每按一下库开发考虑可读)块结构使用默认值。

IMO处理流氓编辑的方式是通过ruamel.yaml解析器附带的yaml实用程序(我是其作者)将代码往返运行,然后使用它。如果你不喜欢它强加给你的子集,通过实验来更改其串行器设置应该相对容易。在修订控制系统中存储/更新任何YAML文件之前,这样的“规范化”是IMO必须的。

+0

哦,冷静,这就是这么简单,我没有甚至想到了往返那样! – Andy