Class: Hanami::Utils::Hash
- Inherits:
 - 
      Object
      
        
- Object
 - Hanami::Utils::Hash
 
 
- Extended by:
 - Transproc::Registry
 
- Defined in:
 - gems/gems/hanami-utils-1.3.3/lib/hanami/utils/hash.rb,
gems/gems/hanami-utils-1.3.8/lib/hanami/utils/hash.rb 
Overview
Hash on steroids
Class Method Summary collapse
- 
  
    
      .deep_dup(input)  ⇒ ::Hash 
    
    
  
  
  
  
  
  
  
  
  
    
Deep duplicates hash values.
 - 
  
    
      .deep_serialize(input)  ⇒ ::Hash 
    
    
  
  
  
  
  
  
  
  
  
    
Deep serializes given object into a
Hash. - 
  
    
      .deep_stringify(input)  ⇒ ::Hash 
    
    
  
  
  
  
  
  
  
  
  
    
Deeply stringifies the given hash.
 - 
  
    
      .deep_symbolize(input)  ⇒ ::Hash 
    
    
  
  
  
  
  
  
  
  
  
    
Performs deep symbolize on the given hash.
 - 
  
    
      .stringify(input)  ⇒ ::Hash 
    
    
  
  
  
  
  
  
  
  
  
    
Stringifies the given hash.
 - 
  
    
      .symbolize(input)  ⇒ ::Hash 
    
    
  
  
  
  
  
  
  
  
  
    
Symbolize the given hash.
 
Instance Method Summary collapse
- #==(other) ⇒ TrueClass, FalseClass (also: #eql?) deprecated Deprecated.
 - #[](key) ⇒ Object? deprecated Deprecated.
 - #[]=(key, value) ⇒ Object deprecated Deprecated.
 - 
  
    
      #deep_dup  ⇒ Hash 
    
    
  
  
  
  
  
  
  deprecated
  
  
    Deprecated. 
Use Hash.deep_dup
 - #deep_symbolize! ⇒ Hash deprecated Deprecated.
 - #delete(key) ⇒ Object? deprecated Deprecated.
 - #hash ⇒ Fixnum deprecated Deprecated.
 - #initialize(hash = {}, &blk) ⇒ Hanami::Utils::Hash constructor deprecated Deprecated.
 - #inspect ⇒ String deprecated Deprecated.
 - #keys ⇒ Array deprecated Deprecated.
 - 
  
    
      #stringify!  ⇒ Hash 
    
    
  
  
  
  
  
  
  deprecated
  
  
    Deprecated. 
Use Hash.stringify
 - 
  
    
      #symbolize!  ⇒ Hash 
    
    
  
  
  
  
  
  
  deprecated
  
  
    Deprecated. 
Use Hash.symbolize
 - #to_a ⇒ ::Array deprecated Deprecated.
 - #to_h ⇒ ::Hash (also: #to_hash) deprecated Deprecated.
 
Constructor Details
#initialize(hash = {}, &blk) ⇒ Hanami::Utils::Hash
Initialize the hash
Source: | on GitHub
        def initialize(hash = {}, &blk) @hash = hash.to_hash @hash.default_proc = blk if blk end  | 
    
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *args, &blk) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Overrides Ruby’s method_missing in order to provide ::Hash interface
Source: | on GitHub
        def method_missing(method_name, *args, &blk) raise NoMethodError.new(%(undefined method `#{method_name}' for #{@hash}:#{self.class})) unless respond_to?(method_name) h = @hash.__send__(method_name, *args, &blk) h = self.class.new(h) if h.is_a?(::Hash) h end  | 
    
Class Method Details
.deep_dup(input) ⇒ ::Hash
Deep duplicates hash values
The output of this function is a deep duplicate of the input. Any further modification on the input, won’t be reflected on the output and viceversa.
Source: | on GitHub
        def self.deep_dup(input) input.each_with_object({}) do |(k, v), result| result[k] = case v when ::Hash deep_dup(v) else Duplicable.dup(v) end end end  | 
    
.deep_serialize(input) ⇒ ::Hash
Deep serializes given object into a Hash
Please note that the returning Hash will use symbols as keys.
Source: | on GitHub
        def self.deep_serialize(input) # rubocop:disable Metrics/MethodLength input.to_hash.each_with_object({}) do |(key, value), output| output[key.to_sym] = case value when ->(h) { h.respond_to?(:to_hash) } deep_serialize(value) when Array value.map do |item| item.respond_to?(:to_hash) ? deep_serialize(item) : item end else value end end end  | 
    
.deep_stringify(input) ⇒ ::Hash
Deeply stringifies the given hash
Source: | on GitHub
        def self.deep_stringify(input) # rubocop:disable Metrics/MethodLength input.each_with_object({}) do |(key, value), output| output[key.to_s] = case value when ::Hash deep_stringify(value) when Array value.map do |item| item.is_a?(::Hash) ? deep_stringify(item) : item end else value end end end  | 
    
.deep_symbolize(input) ⇒ ::Hash
Performs deep symbolize on the given hash
Source: | on GitHub
        def self.deep_symbolize(input) self[:deep_symbolize_keys].call(input) end  | 
    
.stringify(input) ⇒ ::Hash
Stringifies the given hash
Source: | on GitHub
        def self.stringify(input) self[:stringify_keys].call(input) end  | 
    
.symbolize(input) ⇒ ::Hash
Symbolize the given hash
Source: | on GitHub
        def self.symbolize(input) self[:symbolize_keys].call(input) end  | 
    
Instance Method Details
#==(other) ⇒ TrueClass, FalseClass Also known as: eql?
Equality
Source: | on GitHub
        def ==(other) @hash == other.to_h end  | 
    
#[](key) ⇒ Object?
Retrieves the value object corresponding to the key object.
Source: | on GitHub
        def [](key) @hash[key] end  | 
    
#[]=(key, value) ⇒ Object
Associates the value given by value with the key given by key.
Source: | on GitHub
        def []=(key, value) @hash[key] = value end  | 
    
#deep_dup ⇒ Hash
Use deep_dup
Returns a deep copy of the current Hanami::Utils::Hash
Source: | on GitHub
        def deep_dup self.class.new.tap do |result| @hash.each { |k, v| result[k] = Duplicable.dup(v, &DUPLICATE_LOGIC) } end end  | 
    
#deep_symbolize! ⇒ Hash
Use deep_symbolize
Converts in-place all the keys to Symbol instances, nested hashes are converted too.
Source: | on GitHub
        def deep_symbolize! keys.each do |k| v = delete(k) v = self.class.new(v).deep_symbolize! if v.respond_to?(:to_hash) self[k.to_sym] = v end self end  | 
    
#delete(key) ⇒ Object?
Deletes the key-value pair and returns the value from hsh whose key is equal to key.
Source: | on GitHub
        def delete(key) @hash.delete(key) end  | 
    
#hash ⇒ Fixnum
Returns the hash of the internal @hash
Source: | on GitHub
        def hash @hash.hash end  | 
    
#inspect ⇒ String
Returns a string describing the internal @hash
Source: | on GitHub
        def inspect @hash.inspect end  | 
    
#keys ⇒ Array
Returns a new array populated with the keys from this hash
Source: | on GitHub
        def keys @hash.keys end  | 
    
#stringify! ⇒ Hash
Use stringify
Converts in-place all the keys to Symbol instances, nested hashes are converted too.
Source: | on GitHub
        def stringify! keys.each do |k| v = delete(k) v = self.class.new(v).stringify! if v.respond_to?(:to_hash) self[k.to_s] = v end self end  | 
    
#symbolize! ⇒ Hash
Use symbolize
Converts in-place all the keys to Symbol instances.
Source: | on GitHub
        def symbolize! keys.each do |k| v = delete(k) self[k.to_sym] = v end self end  | 
    
#to_a ⇒ ::Array
Converts into a nested array of [ key, value ] arrays.
Source: | on GitHub
        def to_a @hash.to_a end  | 
    
#to_h ⇒ ::Hash Also known as: to_hash
Returns a Ruby Hash as duplicated version of self
Source: | on GitHub
        def to_h @hash.each_with_object({}) do |(k, v), result| v = v.to_h if v.respond_to?(:to_hash) result[k] = v end end  |