Class: SymbolHash

Inherits:
Hash
  • Object
show all
Defined in:
lib/yard/core_ext/symbol_hash.rb

Overview

A subclass of Hash where all keys are converted into Symbols, and optionally, all String values are converted into Symbols.

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Hash

create

Constructor Details

#initialize(symbolize_value = true) ⇒ SymbolHash

Creates a new SymbolHash object



9
10
11
# File 'lib/yard/core_ext/symbol_hash.rb', line 9

def initialize(symbolize_value = true)
  @symbolize_value = symbolize_value
end

Class Method Details

.[](hash) ⇒ SymbolHash .[](*list) ⇒ SymbolHash

Overloads:

  • .[](hash) ⇒ SymbolHash

    Creates a SymbolHash object from an existing Hash

    Examples:

    SymbolHash['x' => 1, :y => 2] # => #<SymbolHash:0x...>
  • .[](*list) ⇒ SymbolHash

    Creates a SymbolHash from an even list of keys and values

    Examples:

    SymbolHash[key1, value1, key2, value2, ...]


28
29
30
31
32
33
34
35
36
# File 'lib/yard/core_ext/symbol_hash.rb', line 28

def self.[](*hsh)
  obj = new
  if hsh.size == 1 && hsh.first.is_a?(Hash)
    hsh.first.each {|k, v| obj[k] = v }
  else
    0.step(hsh.size, 2) {|n| obj[hsh[n]] = hsh[n + 1] }
  end
  obj
end

Instance Method Details

#[](key) ⇒ Object

Accessed a symbolized key



49
# File 'lib/yard/core_ext/symbol_hash.rb', line 49

def [](key) super(key.to_sym) end

#[]=(key, value) ⇒ Object

Assigns a value to a symbolized key



42
43
44
# File 'lib/yard/core_ext/symbol_hash.rb', line 42

def []=(key, value)
  super(key.to_sym, value.instance_of?(String) && @symbolize_value ? value.to_sym : value)
end

#delete(key) ⇒ void

This method returns an undefined value.

Deleted a key and value associated with it



54
# File 'lib/yard/core_ext/symbol_hash.rb', line 54

def delete(key) super(key.to_sym) end

#key?(key) ⇒ Boolean Also known as: has_key?

Tests if a symbolized key exists



59
# File 'lib/yard/core_ext/symbol_hash.rb', line 59

def key?(key) super(key.to_sym) end

#merge(hash) ⇒ SymbolHash

Merges the contents of another hash into a new SymbolHash object



74
# File 'lib/yard/core_ext/symbol_hash.rb', line 74

def merge(hash) dup.merge!(hash) end

#update(hash) ⇒ SymbolHash Also known as: merge!

Updates the object with the contents of another Hash object. This method modifies the original SymbolHash object



67
# File 'lib/yard/core_ext/symbol_hash.rb', line 67

def update(hash) hash.each {|k, v| self[k] = v }; self end