From: Joel VanderWerf Date: 2006-12-09T11:57:00+09:00 Subject: Re: YAML extension not honouring the options passed to .to_yaml Chad Thatcher wrote: > 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. :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 -- vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407