From 55bb615f108f766ff5afd6d36f2a013945332bc4 Mon Sep 17 00:00:00 2001 From: Nicholas Seckar Date: Sun, 26 Feb 2006 01:56:09 +0000 Subject: [PATCH] Update duplicated OrderedOptions code. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3664 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- railties/lib/initializer.rb | 38 ++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/railties/lib/initializer.rb b/railties/lib/initializer.rb index ea54e568cd..6a2e765dbf 100644 --- a/railties/lib/initializer.rb +++ b/railties/lib/initializer.rb @@ -569,10 +569,8 @@ end # Needs to be duplicated from Active Support since its needed before Active # Support is available. -class OrderedOptions < Array # :nodoc: - def []=(key, value) - key = key.to_sym - +class OrderedHash < Array #:nodoc: + def []=(key, value) if pair = find_pair(key) pair.pop pair << value @@ -580,12 +578,32 @@ class OrderedOptions < Array # :nodoc: self << [key, value] end end - + def [](key) - pair = find_pair(key.to_sym) + pair = find_pair(key) pair ? pair.last : nil end + def keys + self.collect { |i| i.first } + end + + private + def find_pair(key) + self.each { |i| return i if i.first == key } + return false + end +end + +class OrderedOptions < OrderedHash #:nodoc: + def []=(key, value) + super(key.to_sym, value) + end + + def [](key) + super(key.to_sym) + end + def method_missing(name, *args) if name.to_s =~ /(.*)=$/ self[$1.to_sym] = args.first @@ -593,10 +611,4 @@ class OrderedOptions < Array # :nodoc: self[name] end end - - private - def find_pair(key) - self.each { |i| return i if i.first == key } - return false - end -end +end \ No newline at end of file