From 2e6f6ced428f3b3b574e7f6a7e1511b2cf470039 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Mon, 13 Jun 2005 20:40:11 +0000 Subject: [PATCH] r1300@iwill: jeremy | 2005-06-13 18:31:29 -0700 Ticket 1436 - Faster indifferent hash r1301@iwill: jeremy | 2005-06-13 18:45:28 -0700 Apply, tweak, test. r1305@iwill: jeremy | 2005-06-13 18:50:24 -0700 Updated changelog. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1413 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- activesupport/CHANGELOG | 4 +++- .../core_ext/hash/indifferent_access.rb | 14 ++++---------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/activesupport/CHANGELOG b/activesupport/CHANGELOG index 2c70cecc2b..1fe697a227 100644 --- a/activesupport/CHANGELOG +++ b/activesupport/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Increased the speed of indifferent hash access by using Hash#default. #1436 [Nicholas Seckar] + * Added that " " is now also blank? (using strip if available) * Fixed Dependencies so all modules are able to load missing constants #1173 [Nicholas Seckar] @@ -137,4 +139,4 @@ * Added that Inflector now accepts Symbols and Classes by calling .to_s on the word supplied -* Added time unit extensions to Fixnum that'll return the period in seconds, like 2.days + 4.hours. \ No newline at end of file +* Added time unit extensions to Fixnum that'll return the period in seconds, like 2.days + 4.hours. diff --git a/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb b/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb index 91445610e2..92653171f9 100644 --- a/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb +++ b/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb @@ -8,16 +8,10 @@ def initialize(constructor = {}) super(constructor) end end - - alias_method :regular_reader, :[] unless method_defined?(:regular_reader) - - def [](key) - case key - when Symbol: regular_reader(key.to_s) || regular_reader(key) - when String: regular_reader(key) || regular_reader(key.to_sym) - else regular_reader(key) - end - end + + def default(key) + self[key.to_s] if key.is_a?(Symbol) + end alias_method :regular_writer, :[]= unless method_defined?(:regular_writer) -- GitLab