class MoStash
Attributes
default_proc[RW]
Public Class Methods
new(init={}, &def_proc)
click to toggle source
Calls superclass method
# File lib/mostash/mostash.rb, line 6 def initialize(init={}, &def_proc) @default_proc = nil if init.is_a? Hash __init__ init self.send(:default=, init.default) if init.default @default_proc = init.default_proc if init.default_proc else super end @default_proc = def_proc if block_given? end
Also aliased as: orig_init
Public Instance Methods
[](key)
click to toggle source
# File lib/mostash/mostash.rb, line 40 def [](key) __get__ key.to_sym end
Also aliased as: __get__
[]=(key, value)
click to toggle source
# File lib/mostash/mostash.rb, line 35 def []=(key, value) __set__ key.to_sym, __adjusted_value__(value) end
Also aliased as: __set__
clone()
click to toggle source
# File lib/mostash/mostash.rb, line 18 def clone Mostash.new(self) end
Also aliased as: dup
merge(from={})
click to toggle source
# File lib/mostash/mostash.rb, line 55 def merge(from={}) self.clone.merge! from end
merge!(from={})
click to toggle source
# File lib/mostash/mostash.rb, line 44 def merge!(from={}) from.each_pair do |key, value| new_value = case value when Hash then Mostash.new(self[key] || {}).merge(value) else value end self[key] = new_value end self end
method_missing(method_name, *args, &block)
click to toggle source
# File lib/mostash/mostash.rb, line 23 def method_missing(method_name, *args, &block) #dbg "#{method_name} was sent #{args.inspect}, and block #{block.inspect}" return default_proc.call(self, method_name) if default_proc if __is_setter__( method_name ) method_name = method_name.to_s.gsub! '=', '' self[method_name] = args.first else self[method_name] end end
Private Instance Methods
__adjusted_value__(value)
click to toggle source
# File lib/mostash/mostash.rb, line 66 def __adjusted_value__(value) case value when Hash then Mostash.new( value ) when Array then value.map{ |v| __adjusted_value__( v ) } else value end#.tap { |ret| dbg "calc adj value for #{value.inspect} = #{ret}" } end
__init__(hash)
click to toggle source
# File lib/mostash/mostash.rb, line 60 def __init__(hash) hash.each_pair do |key, value| self[key] = __adjusted_value__( value ) end end
__is_setter__(method_name)
click to toggle source
# File lib/mostash/mostash.rb, line 74 def __is_setter__(method_name) method_name.to_s =~ /=$/ end
eigenclass()
click to toggle source
# File lib/mostash/mostash.rb, line 78 def eigenclass class << self self end end