Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Ruby编写YAML文件:缺少漂亮的打印格式选项_Ruby_File_Serialization_Configuration_Yaml - Fatal编程技术网

用Ruby编写YAML文件:缺少漂亮的打印格式选项

用Ruby编写YAML文件:缺少漂亮的打印格式选项,ruby,file,serialization,configuration,yaml,Ruby,File,Serialization,Configuration,Yaml,考虑以YAML格式写入/读取文件() 我只是对默认YAML.dump(Ruby 2.2.3)中明显缺少输出格式选项感到惊讶。如果没有任何漂亮的打印选项,YAML.dump看起来真的很难看。我解释: 考虑这个手工编写的YAML配置文件'config/bots.yml',其中有一个项目列表(散列,每个项目都有'token'和'comment'键): 输入文件: - token: 070743004:yuSJJdB5L354Zq41iGIggSdYGJ1IhVh8XSrA comment: ROS

考虑以YAML格式写入/读取文件()

我只是对默认YAML.dump(Ruby 2.2.3)中明显缺少输出格式选项感到惊讶。如果没有任何漂亮的打印选项,YAML.dump看起来真的很难看。我解释:

考虑这个手工编写的YAML配置文件'config/bots.yml',其中有一个项目列表(散列,每个项目都有'token'和'comment'键):

输入文件:

- token: 070743004:yuSJJdB5L354Zq41iGIggSdYGJ1IhVh8XSrA
  comment: ROSPOshop.com

- token: 998001334:zAFo4dBdd3ZZtqKiGdPqkkYGJ1ppVW8pUZ
  comment: pagoSALDO.com bot

- token: 184679990:BBBBBBBBBCCCCCCCGIDDDDDDDHHHHHHHHHH
  comment: SOLYARISoftware demo bot

- token: 184679990:BBBBBBBBBCCCCCCUUUUUUUUUUHHHHHHHHHH
  comment: Another demo bot

- token: 184679990:BBBBBBBBBCCCCCCCGHGGHHGHGHHHHHHHHHH
  comment: Yet Another demo bot
无详细说明:仅加载和连续转储脚本,如下所示:

config = YAML.load(File.open('config/bots.yml'))
File.open('config/bots.yml', "w") { |f| f.write(YAML.dump(config)) }
输出文件:

---
- token: 070743004:yuSJJdB5L354Zq41iGIggSdYGJ1IhVh8XSrA
  comment: ROSPOshop.com
- token: 998001334:zAFo4dBdd3ZZtqgKiGdPqkkYGJ1ppVW8pUZ
  comment: pagoSALDO.com bot
- token: 184679990:BBBBBBBBBCCCCCCCGIDDDDDDDHHHHHHHHHH
  comment: SOLYARISoftware demo bot
- token: 184679990:BBBBBBBBBCCCCCCUUUUUUUUUUHHHHHHHHHH
  comment: Another demo bot
- token: 184679990:BBBBBBBBBCCCCCCCGHGGHHGHGHHHHHHHHHH
  comment: Yet Another demo bot
我很不高兴,因为所有的数组项现在都被折叠了(换行符被删除)。如果项的数量很长和/或每个项的数据结构都是一个变量,那就太糟糕了:一个混乱的读数

问题(1) 有YAML选项吗?为YAML.dump做一些更漂亮的打印吗? 举例来说,是否用空行分隔数组中的每个项目

问题(2) 我发现这本非常有用的教程(“YAML食谱”):

有没有关于解释YAML技巧(数据转换等)的最新更新/官方Ruby文档

问题(3) 任何可能的YAML替代方案?我的意思是可能是读/写YAML的替代gem?顺便说一句,我当然考虑过JSON,但在阅读文本数据时我更喜欢更清晰的YAML格式

已更新 顺便说一句,这里有很多信息/有用的YAML格式提示:

如果您只需要这些,您可以编写自己的精美打印解决方案。例如:

config = YAML.load(File.open('bots.yml'))
puts config.to_yaml.gsub("\n-", "\n\n-")
输出:

---

- token: 070743004:yuSJJdB5L354Zq41iGIggSdYGJ1IhVh8XSrA
  comment: ROSPOshop.com

- token: 998001334:zAFo4dBdd3ZZtqKiGdPqkkYGJ1ppVW8pUZ
  comment: pagoSALDO.com bot

- token: 184679990:BBBBBBBBBCCCCCCCGIDDDDDDDHHHHHHHHHH
  comment: SOLYARISoftware demo bot

- token: 184679990:BBBBBBBBBCCCCCCUUUUUUUUUUHHHHHHHHHH
  comment: Another demo bot

- token: 184679990:BBBBBBBBBCCCCCCCGHGGHHGHGHHHHHHHHHH
  comment: Yet Another demo bot

smart!你是对的->接受了!我从不抱怨YAML Ruby实现。举个例子,如果我对YAML.load没有错的话,我会丢失注释行,比如---#commentPsych,Ruby实现,wraps,一个用C编写的解析器和发射器。LibyML扫描器会去掉所有空格和注释。净结果:Psych从未看到注释因此,nd无法保存它们。