加载并保存YAML文件,而不会丢失Ruby中的引号或注释

Ale*_*vey 5 ruby

我需要以编程方式在Ruby中编辑YAML文件,而且不幸的是,我还需要保留其中的引号字符。能够保留评论也是一种奖励。

也就是说,如果我有一个文件:

---
foo: 'bar'
Run Code Online (Sandbox Code Playgroud)

要么

---
foo: "bar"
Run Code Online (Sandbox Code Playgroud)

我的脚本不得将其写回为:

---
foo: bar
Run Code Online (Sandbox Code Playgroud)

如前所述,理想情况下,我也需要保留评论。

在不仅仅将整个文件视为文本流的情况下,是否有任何简便的方法来解决这些问题中的一个或两个?

Ale*_*vey 5

在撰写本文时,这似乎不可能在 Ruby 中实现,除非您准备编写自己的 YAML 解析器。我研究了包括 Perl 和 Python 在内的其他语言,发现有一个名为 Ruamel 的 Python 库可以做到这一点 - 或者更准确地说,当所有错误都得到修复后,它将能够做到这一点!所以我用 Python 重写了我的应用程序。另请参阅此处的答案。