ruby yaml不要删除标头%YAML 1.1

时间:2018-09-26 19:04:27

标签: ruby header yaml

我在ruby中有一个名为array的数组,我将值添加到了yaml文件中,但是在file.yml中之后,它删除了我%YAML 1.1,所以我不会

yaml_string = File.read "file.yaml"
data = YAML.load yaml_string
array.each do |value|
        data["title"] <<"- "+value+"\n"
end
output = YAML.dump data
File.write("file.yaml", output)

在执行前,该标头存在,但是在执行后,将其删除(%YAML 1.1),并且所有行都用#进行注释,所以我不会

1 个答案:

答案 0 :(得分:0)

我认为您正在尝试执行类似操作。

我假设您的yaml标题数组与您的数组对象匹配。

否则,如果您只想将yaml数组的编号映射到文本,则可以使用类似Enum#with_index的名称。

require 'psych'
filename = "sample_yaml.yml"
array = [0, 1, 2, 3]

if File.exists?(filename)
    puts "File exists. :) Parsing the yaml file."
    yaml = Psych.load_file(filename)
    array.each do |value|
        yaml[value]["title"] << " - #{value}" # find the title that matches the index number of array
    end
else
    raise ArgumentError, "bad file name"
end
puts "Outputting to reformatted yaml file"
File.open("reformatted_file.yaml", 'wb') {|f| f.write "%YAML 1.1\n" + Psych.dump(yaml)}

假设这样的yaml文件

---
- title: zero
- title: one
- title: two
- title: three

输出

---
- title: zero - 0
- title: one - 1
- title: two - 2
- title: three - 3