diff --git a/lib/bson/ordered_hash.rb b/lib/bson/ordered_hash.rb index 0a1284c..af82ecc 100644 --- a/lib/bson/ordered_hash.rb +++ b/lib/bson/ordered_hash.rb @@ -67,11 +67,10 @@ module BSON end def keys - @ordered_keys# || [] + @ordered_keys.dup end def []=(key, value) - #@ordered_keys ||= [] unless has_key?(key) @ordered_keys << key end @@ -79,14 +78,12 @@ module BSON end def each - #@ordered_keys ||= [] @ordered_keys.each { |k| yield k, self[k] } self end alias :each_pair :each def to_a - #@ordered_keys ||= [] @ordered_keys.map { |k| [k, self[k]] } end @@ -95,7 +92,7 @@ module BSON end def replace(other) - @ordered_keys = other.keys + @ordered_keys.replace(other.keys) super end @@ -106,17 +103,15 @@ module BSON end def merge!(other) - #@ordered_keys ||= [] @ordered_keys += other.keys # unordered if not an BSON::OrderedHash @ordered_keys.uniq! super(other) end alias :update :merge! - + def dup result = OrderedHash.new - #@ordered_keys ||= [] @ordered_keys.each do |key| result[key] = self[key] end