Как получить параметры форматирования для метода to_yaml, работающего на ruby ​​1.9.1? - PullRequest
6 голосов
/ 28 января 2010

Согласно документации 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?

1 Ответ

2 голосов
/ 05 марта 2010

Я вырыл это относительно глубоко в источнике Си для этого в не столь далеком прошлом. Я публикую только для того, чтобы подтвердить то, что уже было сказано в комментариях.

В принципе, не могу этого сделать. Опции Syck теряются где-то в процессе, прежде чем они попадут в писатель YAML.

Лучшее, что вы можете иметь, это to_yaml_style. Иногда.

То же самое для 1,8 и 1,9.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...