Phrogz とこの質問に対する私の回答によると、Ruby 1.9 で使用される yaml ライブラリでは、、、、(および に設定することにより) のいくつかのオプションのみが許可されてindentation
いるようです。を含むがこれに限定されない、公式の YAML 形式で許可されている他のオプションを使用したい。小さなハックで他のオプションを有効にすることは可能ですか、または他のオプションを可能にする Ruby 1.9 用の代替 yaml ライブラリはありますか? また、yaml ライブラリが他のオプションを提供しないのはなぜですか?line_width
canonical
line_wrap
line_width
-1
use_block
質問する
322 次
1 に答える
0
一時的な解決策として、 ya2yamlを見つけました。ただし、これにはいくつかの問題があります。
- 読む能力はありません。書き込み専用です。
- 人気のない Ruby クラスを
!ruby/class ...
表記で完全に出力するわけではありません。yaml gemではこの表記法をフル活用し、ruby-yaml-rubyの往復でRubyクラスを保持しています。 - yaml gemで使われている表記法
!ruby/symbol ...
に比べて長く見えるシンボル表記法を使っています。:...
? ... \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 に答える