簡體   English   中英

如何獲取在ruby 1.9.1上運行的to_yaml方法的格式化選項?

[英]How to get the formatting options for the to_yaml method working on ruby 1.9.1?

根據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"

現在,傳遞一些選項:

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的任何人?

在不太遙遠的過去,我已經深入挖掘了C源。 我發帖只是為了驗證評論中已經說過的內容。

基本上,做不到。 在擊中YAML編寫器之前,Syck選項在進程的某個地方丟失了。

你可以擁有的最好的是to_yaml_style 有時。

對於1.8和1.9,這是相同的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM