diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2007-10-09 07:48:59 +0000 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2007-10-09 07:48:59 +0000 |
commit | fba05826dc0433e177e8cf72b9ef12878fd97586 (patch) | |
tree | afa07f8786d50cb0a41f21bf40ed02b410ab719b /activesupport/lib/active_support | |
parent | aa04635d8ea163282954888daf74336623c2001f (diff) | |
download | rails-fba05826dc0433e177e8cf72b9ef12878fd97586.tar.gz rails-fba05826dc0433e177e8cf72b9ef12878fd97586.tar.bz2 rails-fba05826dc0433e177e8cf72b9ef12878fd97586.zip |
Hash is ordered in Ruby 1.9
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7817 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activesupport/lib/active_support')
-rw-r--r-- | activesupport/lib/active_support/ordered_options.rb | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/activesupport/lib/active_support/ordered_options.rb b/activesupport/lib/active_support/ordered_options.rb index 78d699cdf4..1542a2479e 100644 --- a/activesupport/lib/active_support/ordered_options.rb +++ b/activesupport/lib/active_support/ordered_options.rb @@ -1,26 +1,31 @@ # OrderedHash is namespaced to prevent conflicts with other implementations module ActiveSupport - class OrderedHash < Array #:nodoc: - def []=(key, value) - if pair = assoc(key) - pair.pop - pair << value - else - self << [key, value] + # Hash is ordered in Ruby 1.9! + if RUBY_VERSION >= '1.9' + OrderedHash = ::Hash + else + class OrderedHash < Array #:nodoc: + def []=(key, value) + if pair = assoc(key) + pair.pop + pair << value + else + self << [key, value] + end end - end - def [](key) - pair = assoc(key) - pair ? pair.last : nil - end + def [](key) + pair = assoc(key) + pair ? pair.last : nil + end - def keys - collect { |key, value| key } - end + def keys + collect { |key, value| key } + end - def values - collect { |key, value| value } + def values + collect { |key, value| value } + end end end end |