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

- (SymbolHash) initialize(symbolize_value = true)

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

+ (SymbolHash) [](hash) + (SymbolHash) [](*list)

Overloads:

  • + (SymbolHash) [](hash)

    Creates a SymbolHash object from an existing Hash

    Examples:

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

    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

- (Object) [](key)

Accessed a symbolized key



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

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

- (Object) []=(key, value)

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

- (void) delete(key)

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

- (Boolean) has_key?(key)

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

- (SymbolHash) merge(hash)

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

- (SymbolHash) update(hash) 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