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

Parameters:

  • symbolize_value (Boolean) (defaults to: true)

    converts any String values into Symbols if this is set to true.



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

    Parameters:

    • hash (Hash)

      the hash object

    Returns:

    • (SymbolHash)

      a new SymbolHash from a hash object

  • + (SymbolHash) [](*list)

    Creates a SymbolHash from an even list of keys and values

    Examples:

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

    Parameters:

    • list (Array)

      an even list of key followed by value

    Returns:



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

Parameters:

  • key (#to_sym)

    the key to access

Returns:

  • (Object)

    the value associated with the 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

Parameters:

  • key (#to_sym)

    the key

  • value (Object)

    the value to be assigned. If this is a String and values are set to be symbolized, it will be converted into a Symbol.



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

Parameters:

  • key (#to_sym)

    the key to delete



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

Parameters:

  • key (#to_sym)

    the key to test

Returns:

  • (Boolean)

    whether the 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

Parameters:

  • hash (Hash)

    the hash of objects to copy

Returns:

  • (SymbolHash)

    a new SymbolHash containing the merged data



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

Parameters:

  • hash (Hash)

    the hash object to copy the values from

Returns:



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

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