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

Constructor Details

#initialize(symbolize_value = true) ⇒ SymbolHash

Creates a new SymbolHash object



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

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, ...]


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

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



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

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

#[]=(key, value) ⇒ Object

Assigns a value to a symbolized key



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

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



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

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

#has_key?(key) ⇒ Boolean

Tests if a symbolized key exists



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

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

#merge(hash) ⇒ SymbolHash

Merges the contents of another hash into a new SymbolHash object



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

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



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

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