From 14076d88921ff33b4c99dd87e29d0587cec5c65c Mon Sep 17 00:00:00 2001 From: John Barton (joho) Date: Thu, 9 Apr 2009 13:30:12 +1000 Subject: [PATCH 1/2] adding in the first and last methods to OrderedHash --- activesupport/lib/active_support/ordered_hash.rb | 8 ++++++++ activesupport/test/ordered_hash_test.rb | 10 ++++++++++ 2 files changed, 18 insertions(+), 0 deletions(-) diff --git a/activesupport/lib/active_support/ordered_hash.rb b/activesupport/lib/active_support/ordered_hash.rb index fed8094..55fe1f4 100644 --- a/activesupport/lib/active_support/ordered_hash.rb +++ b/activesupport/lib/active_support/ordered_hash.rb @@ -82,6 +82,14 @@ module ActiveSupport v = delete(k) [k, v] end + + def first + [@keys.first, self[@keys.first]] + end + + def last + [@keys.last, self[@keys.last]] + end def merge!(other_hash) other_hash.each {|k,v| self[k] = v } diff --git a/activesupport/test/ordered_hash_test.rb b/activesupport/test/ordered_hash_test.rb index 7cd8c8a..f987658 100644 --- a/activesupport/test/ordered_hash_test.rb +++ b/activesupport/test/ordered_hash_test.rb @@ -149,6 +149,16 @@ class OrderedHashTest < Test::Unit::TestCase assert !@ordered_hash.keys.include?(pair.first) end + def test_first + pair = @ordered_hash.first + assert_equal [@keys.first, @values.first], pair + end + + def test_last + pair = @ordered_hash.last + assert_equal [@keys.last, @values.last], pair + end + def test_keys original = @ordered_hash.keys.dup @ordered_hash.keys.pop -- 1.6.2.rc1 From ad3baa6027854a7ecf5d995df22fab07a383464b Mon Sep 17 00:00:00 2001 From: John Barton (joho) Date: Thu, 16 Apr 2009 09:25:49 +1000 Subject: [PATCH 2/2] making to_a ordered on the OrderedHash --- activesupport/lib/active_support/ordered_hash.rb | 4 ++++ activesupport/test/ordered_hash_test.rb | 6 ++++++ 2 files changed, 10 insertions(+), 0 deletions(-) diff --git a/activesupport/lib/active_support/ordered_hash.rb b/activesupport/lib/active_support/ordered_hash.rb index 55fe1f4..0656aab 100644 --- a/activesupport/lib/active_support/ordered_hash.rb +++ b/activesupport/lib/active_support/ordered_hash.rb @@ -99,6 +99,10 @@ module ActiveSupport def merge(other_hash) dup.merge!(other_hash) end + + def to_a + @keys.collect {|k| [k, self[k]]} + end def inspect "#" diff --git a/activesupport/test/ordered_hash_test.rb b/activesupport/test/ordered_hash_test.rb index f987658..4ec2f60 100644 --- a/activesupport/test/ordered_hash_test.rb +++ b/activesupport/test/ordered_hash_test.rb @@ -165,6 +165,12 @@ class OrderedHashTest < Test::Unit::TestCase assert_equal original, @ordered_hash.keys end + def test_to_a + values = [] + @keys.each_with_index { |e, i| values << [e, @values[i]] } + assert_equal values, @ordered_hash.to_a + end + def test_inspect assert @ordered_hash.inspect.include?(@hash.inspect) end -- 1.6.2.rc1