Как получить YAML в Ruby версии 1.9.3 для вывода 8-битных строк ASCII-в виде строк?

Вот в чем проблема:У меня могут быть строки в кодировке UTF-8, и у меня могут быть строки в формате US-ASCII. Независимо от кодировки, я бы хотел, чтобы YAML.dump(str)фактически выводил объекты Stringвместо этих бесполезных объектов !binary, как показано в примере.

Есть ли флаг или что-то, чего я не вижу, чтобы заставить YAML.dump()поступать правильно?

Пример Ruby 1.9.1

YAML::VERSION              # "0.60"
a = "foo"                  # => "foo"
a.force_encoding("BINARY") # => "foo"
YAML.dump(a)               # => "--- foo\n" 

Пример Ruby 1.9.3

YAML::VERSION              # "1.2.2"
a = "foo"                  #  => "foo" 
a.force_encoding("BINARY") #  => "foo" 
YAML.dump(a)               # => "--- !binary |-\n  Zm9v\n"

Обновление:Получил мой собственный ответ

YAML::ENGINE.yamler='syck'
YAML.dump(a)               # => "--- foo\n" 

Итак, похоже на использование старого движка yamler со старым поведением.

8
задан Dead Pixel 16 April 2012 в 02:24
поделиться