1. ホーム
  2. ruby

[解決済み] rubyでto_yamlに書式オプションを指定することはできますか?

2022-02-14 10:33:02

質問内容

コード

require 'yaml'
puts YAML.load("
is_something:
  values: ['yes', 'no']
").to_yaml

プロデュース

--- 
is_something: 
  values: 
  - "yes"
  - "no"

これは正しいyamlですが、配列のハッシュを持つ場合、醜く見えます。 どうにかして to_yaml をインライン配列バージョンのYAMLにすることはできますか?

オプションハッシュは to_yaml が、どのように使うのでしょうか?

編集0:Pozsár Balázsさん、ありがとうございます。 しかし、ruby 1.8.7 (2009-04-08 patchlevel 160)では、オプションハッシュは宣伝通りには動きません :(

irb
irb(main):001:0> require 'yaml'
=> true
irb(main):002:0> puts [[ 'Crispin', 'Glover' ]].to_yaml( :Indent => 4, :UseHeader => true, :UseVersion => true )
--- 
- - Crispin
  - Glover
=> nil

解決方法は?

この醜いハックは、トリックを行うように見える...

class Array
  def to_yaml_style
    :inline
  end
end

rubyのソースを見ても、同じことを実現するために渡せるオプションが見当たりません。 デフォルトのオプションは lib/yaml/constants.rb .