YAML extension not honouring the options passed to .to_yaml

As outlined on http://yaml4r.sourceforge.net/doc/ I triesd setting some
options in the hash passed to .to_yaml and nothing seems to be making
any difference:

out_file.puts newmaster.to_yaml(:SortKeys => true)

newmaster is a hash and the output is definitely not being sorted.
Unfortunately using newmaster.sort.to_yaml changes the structure of the
yaml being output significantly (seeing as it is converted to and array
of arrrays) and that is not desirable). Can anyone shed some light on
this? I am using vanilla 1.8.4 install on windows and presumably the
YAML.rb that shipped with that because I haven’t installed anything
separately.

Cheers.

Chad T. wrote:

of arrrays) and that is not desirable). Can anyone shed some light on
this? I am using vanilla 1.8.4 install on windows and presumably the
YAML.rb that shipped with that because I haven’t installed anything
separately.

:SortKeys isn’t supported in 1.8.4. I don’t know about more recent
versions.

Here’s the hack I use:

class Hash
def to_yaml( opts = {} )
YAML::quick_emit( object_id, opts ) do |out|
out.map( taguri, to_yaml_style ) do |map|

if opts[:SortKeys] ## fails in nesting, so let’s just always

sort
sorted_keys = keys
sorted_keys = begin
sorted_keys.sort
rescue
sorted_keys.sort_by {|k| k.to_s} rescue sorted_keys
end

       sorted_keys.each do |k|
         map.add( k, fetch(k) )
       end

else

each do |k, v|

map.add( k, v )

end

end

   end
 end

end
end

Joel, you are a total hero and saviour, that works like a dream. Thanks
a million!!