yaml - 是否有任何简化的 YAML 格式变得普遍?

标签 yaml simplify simplification

我喜欢 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 anchor 和引用,有时希望 JSON 有它们。

但我希望我们大多数人都同意以下内容不是那么容易阅读(我知道这个例子是说教的,但重点是因为它是有效的 YAML,与您合作的人可能会使用这些功能污染您的数据):
!!map {
  ? !!str "sequence"
  : !!seq [ !!str "one", !!str "two" ],
  ? !!str "mapping"
  : !!map {
    ? !!str "sky" : !!str "blue",
    ? !!str "sea" : !!str "green",
  },
}

所以我很失望,我找不到任何广泛的政变来标准化 YAML 的简化子集,至少通过粗略的谷歌搜索。

有人知道吗?

最佳答案

有很多这样的子集。几乎每个 YAML 库都通过往返(将 YAML 加载到内部数据并将数据序列化回 YAML)产生的格式隐式定义了一个。

您通常可以影响这些子集,但它们往往具有有用的默认值,具有用于较大集合的块结构和用于较小集合的流样式(每个都取决于库开发人员认为可读的内容)。

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

关于yaml - 是否有任何简化的 YAML 格式变得普遍?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30005820/

相关文章:

gitlab - 可以从命令行更新 Helm values.yaml 文件吗?

PHP 后期静态绑定(bind)引用

matrix - Maxima:简化矩阵分量

ruby - 如何在 Psych 中反序列化类?

r - R : (Package which is only available in source form, 错误,可能需要编译 C/C++/Fortran)

java - 使用 XOR 对 boolean 表达式求反

java - 有没有进一步的方法来简化这段代码?

objective-c - 为什么 iPhone 示例代码使用了这么多中间变量?

maxima - 自定义简化(规则和模式)

java - Apache Cassandra 3.10 IllegalArgumentException - Murmur3Partitioner 的 token 无效