summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Bleything <ben@bleything.net>2012-08-01 10:03:53 -0700
committerBen Bleything <ben@bleything.net>2012-08-01 10:03:53 -0700
commit464751fc541b945fba95d111a023a06c9d36c907 (patch)
tree123afbf4d3e27ee9e18198ed5473c32b246abf73
parentdcfb2f09bdf74c82ab3a028cbc13ac9642331b33 (diff)
parentf4519d56ebd4ca129669e212f46eab782e642483 (diff)
downloadplist-464751fc541b945fba95d111a023a06c9d36c907.tar.gz
Merge pull request #2 from bradleyjucsc/master
Sorting issue
-rw-r--r--lib/plist/generator.rb9
-rw-r--r--test/test_generator.rb21
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