Class: ExtendHash

Inherits:
Hash show all
Defined in:
lib/tagen/core/extend_hash.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Hash

#delete, #original_delete

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args) ⇒ Object



37
38
39
40
41
42
43
44
45
# File 'lib/tagen/core/extend_hash.rb', line 37

def method_missing(name, *args)
  if name =~ /=$/
    store(name[0...-1].to_sym, args[0])
  elsif has_key?(name)
    fetch(name)
  else
    raise NoMethodError, "-- :#{name}, #{args.inspect}"
  end
end

Class Method Details

.[](hash) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
# File 'lib/tagen/core/extend_hash.rb', line 3

def [](hash)
  case hash
  when ExtendHash
    hash
  when Hash
    eh = self.new
    eh.replace deep_convert(hash)
  else
    raise ArgumentError, "must be a Hash or ExtendHash"
  end
end

Instance Method Details

#[](key) ⇒ Object



32
33
34
35
# File 'lib/tagen/core/extend_hash.rb', line 32

def [](key)
  key = key.to_sym if String === key
  super(key)
end

#[]=(key, value) ⇒ Object



27
28
29
30
# File 'lib/tagen/core/extend_hash.rb', line 27

def []=(key, value)
  key = key.to_sym if String === key
  super(key, value)
end