diff options
author | Ben Bleything <ben@bleything.net> | 2012-08-01 10:03:53 -0700 |
---|---|---|
committer | Ben Bleything <ben@bleything.net> | 2012-08-01 10:03:53 -0700 |
commit | 464751fc541b945fba95d111a023a06c9d36c907 (patch) | |
tree | 123afbf4d3e27ee9e18198ed5473c32b246abf73 | |
parent | dcfb2f09bdf74c82ab3a028cbc13ac9642331b33 (diff) | |
parent | f4519d56ebd4ca129669e212f46eab782e642483 (diff) | |
download | plist-464751fc541b945fba95d111a023a06c9d36c907.tar.gz |
Merge pull request #2 from bradleyjucsc/master
Sorting issue
-rw-r--r-- | lib/plist/generator.rb | 9 | ||||
-rw-r--r-- | test/test_generator.rb | 21 |
2 files changed, 22 insertions, 8 deletions
diff --git a/lib/plist/generator.rb b/lib/plist/generator.rb index a10a077..3b84c30 100644 --- a/lib/plist/generator.rb +++ b/lib/plist/generator.rb @@ -78,7 +78,7 @@ module Plist::Emit else inner_tags = [] - element.keys.sort.each do |k| + element.keys.sort_by{|k| k.to_s }.each do |k| v = element[k] inner_tags << tag('key', CGI::escapeHTML(k.to_s)) inner_tags << plist_node(v) @@ -213,13 +213,6 @@ module Plist::Emit end end -# we need to add this so sorting hash keys works properly -class Symbol #:nodoc: - def <=> (other) - self.to_s <=> other.to_s - end -end - class Array #:nodoc: include Plist::Emit end diff --git a/test/test_generator.rb b/test/test_generator.rb index dbb1a59..b03001c 100644 --- a/test/test_generator.rb +++ b/test/test_generator.rb @@ -51,4 +51,25 @@ class TestGenerator < Test::Unit::TestCase File.unlink('test.plist') end + + # The hash in this test was failing with 'hsh.keys.sort', + # we are making sure it works with 'hsh.keys.sort_by'. + def test_sorting_keys + hsh = {:key1 => 1, :key4 => 4, 'key2' => 2, :key3 => 3} + output = Plist::Emit.plist_node(hsh) + expected = <<-STR +<dict> + <key>key1</key> + <integer>1</integer> + <key>key2</key> + <integer>2</integer> + <key>key3</key> + <integer>3</integer> + <key>key4</key> + <integer>4</integer> +</dict> + STR + + assert_equal expected, output.gsub(/[\t]/, "\s\s") + end end |