lib/extlib/mash.rb in extlib-0.9.8 vs lib/extlib/mash.rb in extlib-0.9.9

- old
+ new

@@ -7,95 +7,95 @@ # # @details [Alternatives] # If constructor is a Hash, a new mash will be created based on the keys of # the hash and no default value will be set. def initialize(constructor = {}) - if constructor.is_a?(Hash) - super() - update(constructor) - else - super(constructor) - end + if constructor.is_a?(Hash) + super() + update(constructor) + else + super(constructor) + end end # @param key<Object> The default value for the mash. Defaults to nil. # # @details [Alternatives] # If key is a Symbol and it is a key in the mash, then the default value will # be set to the value matching the key. - def default(key = nil) - if key.is_a?(Symbol) && include?(key = key.to_s) - self[key] - else - super - end - end - - alias_method :regular_writer, :[]= unless method_defined?(:regular_writer) + def default(key = nil) + if key.is_a?(Symbol) && include?(key = key.to_s) + self[key] + else + super + end + end + + alias_method :regular_writer, :[]= unless method_defined?(:regular_writer) alias_method :regular_update, :update unless method_defined?(:regular_update) # @param key<Object> The key to set. # @param value<Object> # The value to set the key to. # # @see Mash#convert_key # @see Mash#convert_value - def []=(key, value) - regular_writer(convert_key(key), convert_value(value)) + def []=(key, value) + regular_writer(convert_key(key), convert_value(value)) end # @param other_hash<Hash> # A hash to update values in the mash with. The keys and the values will be # converted to Mash format. # # @return <Mash> The updated mash. - def update(other_hash) - other_hash.each_pair { |key, value| regular_writer(convert_key(key), convert_value(value)) } - self - end - + def update(other_hash) + other_hash.each_pair { |key, value| regular_writer(convert_key(key), convert_value(value)) } + self + end + alias_method :merge!, :update # @param key<Object> The key to check for. This will be run through convert_key. # # @return <TrueClass, FalseClass> True if the key exists in the mash. - def key?(key) - super(convert_key(key)) - end + def key?(key) + super(convert_key(key)) + end # def include? def has_key? def member? alias_method :include?, :key? alias_method :has_key?, :key? alias_method :member?, :key? # @param key<Object> The key to fetch. This will be run through convert_key. # @param *extras<Array> Default value. # # @return <Object> The value at key or the default value. - def fetch(key, *extras) - super(convert_key(key), *extras) + def fetch(key, *extras) + super(convert_key(key), *extras) end # @param *indices<Array> # The keys to retrieve values for. These will be run through +convert_key+. # # @return <Array> The values at each of the provided keys - def values_at(*indices) - indices.collect {|key| self[convert_key(key)]} + def values_at(*indices) + indices.collect {|key| self[convert_key(key)]} end # @param hash<Hash> The hash to merge with the mash. # # @return <Mash> A new mash with the hash values merged in. - def merge(hash) - self.dup.update(hash) + def merge(hash) + self.dup.update(hash) end # @param key<Object> # The key to delete from the mash.\ - def delete(key) - super(convert_key(key)) + def delete(key) + super(convert_key(key)) end # @param *rejected<Array[(String, Symbol)] The mash keys to exclude. # # @return <Mash> A new mash without the selected keys. @@ -109,40 +109,40 @@ # Used to provide the same interface as Hash. # # @return <Mash> This mash unchanged. def stringify_keys!; self end - + # @return <Hash> The mash as a Hash with string keys. - def to_hash - Hash.new(default).merge(self) - end - + def to_hash + Hash.new(default).merge(self) + end + protected # @param key<Object> The key to convert. # # @param <Object> # The converted key. If the key was a symbol, it will be converted to a # string. # # @api private - def convert_key(key) - key.kind_of?(Symbol) ? key.to_s : key + def convert_key(key) + key.kind_of?(Symbol) ? key.to_s : key end # @param value<Object> The value to convert. # # @return <Object> # The converted value. A Hash or an Array of hashes, will be converted to # their Mash equivalents. # # @api private - def convert_value(value) + def convert_value(value) if value.class == Hash - value.to_mash + value.to_mash elsif value.is_a?(Array) - value.collect { |e| convert_value(e) } + value.collect { |e| convert_value(e) } else value - end + end end -end \ No newline at end of file +end