2010-01-28 8 views
6

YAML belgelerine göre hash of options ürününü .to_yaml yöntemine geçirmek mümkündür.ruby ​​1.9.1 üzerinde çalışan to_yaml yöntemi için biçimlendirme seçenekleri nasıl edinilir?

Şu anda çalışmayan belgeler tarafından önerilen seçenekleri ilettiğimde, karma göz ardı ediliyor.

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" 

Şimdi, bazı seçenekler geçen:

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" 

Gördüğünüz gibi seçenekler çalışmaz geçen. Sadece varsayılanlar:

Bu bilinen bir hata mı? veya Şu anda Ruby 1.9.1 kullanan herkes için çalışıyor mu?

+0

Gördüğünüz gibi aynı davranışı alıyorum. Çözünürlük olmadan daha önce sorulmuş gibi görünüyor: http://stackoverflow.com/questions/1054730/is-it-possible-to-specify-formatting-options-for-toyaml-in-ruby –

+0

Evet, bu 1.8.7 kullanıyorlardı, sadece 1.9.1 için çalışıp çalışmadığını merak ediyordum, özlü bir cevap olmadan bir problem gibi görünüyor. – jpemberthy

+0

Bunun cevabını bilmek isterim. Uzun zaman önce pes ettim ve kendi "sort yaml" fonksiyonunu yazdım (1.8.7 için). –

cevap

2

Bu kadar uzak olmayan geçmişte bunun için C kaynağına nispeten daha derin kazdım. Sadece yorumlarda söylenenleri doğrulamak için gönderiyorum.

Temel olarak bunu yapamazsınız. YAML yazarı vurmadan önce Syck seçenekleri süreçte bir yerde kaybolur.

Sahip olabileceğiniz en iyi şey to_yaml_style. Ara sıra.

Bu, 1,8 ve 1,9 için aynıdır.

+0

Tamam, ben biçimlendirilmiş almak için küçük bir modül yazmayı bitirdim, 'to_yaml' yöntemini kullanması gerektiği kadar iyi değil ... ama en azından işe yarıyor. Teşekkürler. – jpemberthy

İlgili konular