class Ninja::Hash
Public Class Methods
new(hash)
click to toggle source
# File lib/ninja/hash.rb, line 3 def initialize hash self.replace hash hash.keys.each{|key| define(key) } end
Public Instance Methods
[]=(key, value)
click to toggle source
Calls superclass method
# File lib/ninja/hash.rb, line 8 def []=(key, value) super(key, value) define(key) end
get(key, &block)
click to toggle source
# File lib/ninja/hash.rb, line 13 def get(key, &block) unless value = self.send(key) block && block.call else value end end
method_missing(name, *args)
click to toggle source
# File lib/ninja/hash.rb, line 21 def method_missing(name, *args) if md = name.to_s.match(/(.+)=\z/) define(md[1]) self.send(name, *args) end nil end
Private Instance Methods
define(key)
click to toggle source
# File lib/ninja/hash.rb, line 30 def define key define_singleton_method(key) { value = case key when String (self[key] || self[key.to_sym]) else (self[key] || self[key.to_s]) end if value.is_a?(::Hash) value = Ninja::Hash.new(value) self[key] = value end value } define_singleton_method("#{key}=") {|value| self[key] = value } end