根据YAML文档,可以将选项的散列传递给.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"
Run Code Online (Sandbox Code Playgroud)
现在,传递一些选项:
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"
Run Code Online (Sandbox Code Playgroud)
如您所见,传递选项不起作用.只有默认值:
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}
Run Code Online (Sandbox Code Playgroud)
这是一个已知的错误?或者它目前适用于使用Ruby 1.9.1的任何人?
在不久的将来,我已经为此深入研究了 C 源代码。我发帖只是为了验证评论中已经说过的内容。
基本上是做不到的。在到达 YAML 编写器之前,Syck 选项会在该过程中的某个地方丢失。
你能拥有的最好的就是to_yaml_style
。有时。
1.8 和 1.9 也是如此。
归档时间: |
|
查看次数: |
2103 次 |
最近记录: |