如何获取在ruby 1.9.1上运行的to_yaml方法的格式化选项?

时间:2010-01-28 18:07:49

标签: ruby yaml to-yaml

根据YAML文档,可以将hash of options传递给.to_yaml方法。

目前,当我按照文档建议传递的选项不起作用时,哈希值被忽略。

irb(main):001:0> require 'yaml'
=> true
irb(main):002:0> user = { "1" => { "name" => "john", "age" => 44 } }
user.to_yaml
=> "--- \n\"1\": \n  name: john\n  age: 44\n"

现在,传递一些选项:

irb(main):014:0> user.to_yaml( :Indent => 4, :UseHeader => true, :UseVersion => true )
=> "--- \n\"1\": \n  name: john\n  age: 44\n"
irb(main):015:0> user.to_yaml( :Separator => "\n" )
=> "--- \n\"1\": \n  name: john\n  age: 44\n"
irb(main):016:0> user.to_yaml( :separator => "\n" )
=> "--- \n\"1\": \n  name: john\n  age: 44\n"
irb(main):017:0> RUBY_VERSION
=> "1.9.1"

如您所见,传递选项不起作用。只有默认值:

YAML::DEFAULTS
=> {:Indent=>2, :UseHeader=>false, :UseVersion=>false, :Version=>"1.0", :SortKeys=>false, :AnchorFormat=>"id%03d", :ExplicitTypes=>false, :WidthType=>"absolute", :BestWidth=>80, :UseBlock=>false, :UseFold=>false, :Encoding=>:None}

这是一个已知的错误吗?或者它目前适用于使用Ruby 1.9.1的任何人?

1 个答案:

答案 0 :(得分:2)

在不久的将来,我已经深入挖掘了C源。我发帖只是为了验证评论中已经说过的内容。

基本上,不能这样做。在击中YAML编写器之前,Syck选项在此过程中的任何地方都会丢失。

你可以获得的最好成绩是to_yaml_style。有时。

对于1.8和1.9,这是相同的。