3

Phrogz とこの質問に対する私の回答によると、Ruby 1.9 で使用される yaml ライブラリでは、、、、(および に設定することにより) のいくつかのオプションのみが許可されてindentationいるようです。を含むがこれに限定されない、公式の YAML 形式で許可されている他のオプションを使用したい。小さなハックで他のオプションを有効にすることは可能ですか、または他のオプションを可能にする Ruby 1.9 用の代替 yaml ライブラリはありますか? また、yaml ライブラリが他のオプションを提供しないのはなぜですか?line_widthcanonicalline_wrapline_width-1use_block

4

1 に答える 1

0

一時的な解決策として、 ya2yamlを見つけました。ただし、これにはいくつかの問題があります。

  1. 読む能力はありません。書き込み専用です。
  2. 人気のない Ruby クラスを!ruby/class ...表記で完全に出力するわけではありません。yaml gemではこの表記法をフル活用し、ruby-yaml-rubyの往復でRubyクラスを保持しています。
  3. yaml gemで使われている表記法!ruby/symbol ...に比べて長く見えるシンボル表記法を使っています。:...
  4. ? ... \n:ハッシュ キーに yaml 構文を使用します。これは、 yaml gem を使用したよりコンパクトなハッシュ表記に比べて長く見えます。

問題 2 は今のところ私にとって大したことではないので、問題 1、3、4 を克服するために、次の方法で yaml と ya2yaml の gem を組み合わせて使用​​しています。

require "yaml" # For reading.
require "ya2yaml" # For writing.

class Object
  def to_yaml # Method for writing in yaml
    ya2yaml.
    # Put hash key on a single line if it is a symbol
    gsub(/^(\s*)\? !ruby\/symbol (\S+)\s+/, '\1:\2').
    # Use symbol literal
    gsub(/(?<=\s)!ruby\/symbol /, ':')
  end
end
于 2012-10-03T18:12:43.587 に答える