fed8094a24d231bb5826700f7ae4c2c681dd4414
1 # OrderedHash is namespaced to prevent conflicts with other implementations
3 # Hash is ordered in Ruby 1.9!
4 if RUBY_VERSION >= '1.9'
7 class OrderedHash
< Hash
#:nodoc:
8 def initialize(*args
, &block
)
13 def initialize_copy(other
)
15 # make a deep copy of keys
20 @keys << key
if !has_key
?(key
)
26 index
= @keys.index(key
)
53 @keys.collect
{ |key
| self[key
] }
61 @keys.each
{ |key
| yield key
}
65 @keys.each
{ |key
| yield self[key
]}
69 @keys.each
{|key
| yield [key
, self[key
]]}
72 alias_method
:each_pair, :each
86 def merge
!(other_hash
)
87 other_hash
.each
{|k
,v
| self[k
] = v
}
92 dup
.merge
!(other_hash
)
96 "#<OrderedHash #{super}>"
102 @keys.delete_if
{|k
| !has_key
?(k
)}