【问题标题】:Load and save a YAML file without losing quotes or comments in Ruby加载和保存 YAML 文件而不会丢失 Ruby 中的引号或注释
【发布时间】:2016-08-27 15:16:46
【问题描述】:

我需要在 Ruby 中以编程方式编辑 YAML 文件,不幸的是,我还需要保留封闭的引号字符。能够留住 cmets 也是一种奖励。

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

---
foo: 'bar'

---
foo: "bar"

我的脚本不能写回:

---
foo: bar

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

不走将整个文件视为文本流的路径,有没有什么方便的方法可以解决这些问题中的一个或两个?

【问题讨论】:

  • 您不能按照here 的说明使用字符串而不是整数吗?
  • 如果 ruby​​ 中不存在忽略注释文本的解析器,您将需要自己的解析器。至于删除引号的文件,这是每个 yaml 规范,字符串不必被括起来,但通常会在它使字符串不那么模棱两可时被括起来(例如,[], 等字符, " 在里面)

标签: ruby


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 2012-03-01
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 2020-05-29
    相关资源
    最近更新 更多