aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activesupport/CHANGELOG4
-rw-r--r--activesupport/lib/active_support/ordered_hash.rb14
-rw-r--r--activesupport/test/ordered_hash_test.rb19
3 files changed, 37 insertions, 0 deletions
diff --git a/activesupport/CHANGELOG b/activesupport/CHANGELOG
index a1a3c7ac2b..a6ce37ac14 100644
--- a/activesupport/CHANGELOG
+++ b/activesupport/CHANGELOG
@@ -1,5 +1,9 @@
*Edge*
+* Add more standard Hash methods to ActiveSupport::OrderedHash [Steve Purcell]
+
+* Namespace Inflector, Dependencies, OrderedOptions, and TimeZone under ActiveSupport [Josh Peek]
+
* Fixed Date#end_of_quarter to not blow up on May 31st [#289 state:resolved] (Danger)
diff --git a/activesupport/lib/active_support/ordered_hash.rb b/activesupport/lib/active_support/ordered_hash.rb
index 6993621ef9..59ceaec696 100644
--- a/activesupport/lib/active_support/ordered_hash.rb
+++ b/activesupport/lib/active_support/ordered_hash.rb
@@ -38,6 +38,20 @@ module ActiveSupport
each { |array| hash[array[0]] = array[1] }
end
end
+
+ def has_key?(k)
+ !assoc(k).nil?
+ end
+
+ alias_method :key?, :has_key?
+ alias_method :include?, :has_key?
+ alias_method :member?, :has_key?
+
+ def has_value?(v)
+ any? { |key, value| value == v }
+ end
+
+ alias_method :value?, :has_value?
end
end
end
diff --git a/activesupport/test/ordered_hash_test.rb b/activesupport/test/ordered_hash_test.rb
index 14be48724e..98a6ad6b26 100644
--- a/activesupport/test/ordered_hash_test.rb
+++ b/activesupport/test/ordered_hash_test.rb
@@ -42,4 +42,23 @@ class OrderedHashTest < Test::Unit::TestCase
assert_nil @ordered_hash.delete(bad_key)
end
+
+ def test_has_key
+ assert_equal true, @ordered_hash.has_key?('blue')
+ assert_equal true, @ordered_hash.key?('blue')
+ assert_equal true, @ordered_hash.include?('blue')
+ assert_equal true, @ordered_hash.member?('blue')
+
+ assert_equal false, @ordered_hash.has_key?('indigo')
+ assert_equal false, @ordered_hash.key?('indigo')
+ assert_equal false, @ordered_hash.include?('indigo')
+ assert_equal false, @ordered_hash.member?('indigo')
+ end
+
+ def test_has_value
+ assert_equal true, @ordered_hash.has_value?('000099')
+ assert_equal true, @ordered_hash.value?('000099')
+ assert_equal false, @ordered_hash.has_value?('ABCABC')
+ assert_equal false, @ordered_hash.value?('ABCABC')
+ end
end