Module: InheritedHash::ClassMethods

Includes:
InstanceMethods
Defined in:
lib/inherited-hash.rb

Instance Method Summary collapse

Methods included from InstanceMethods

#inherited_hashes

Instance Method Details

#inherited_hash_accessor(*names) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/inherited-hash.rb', line 20

def inherited_hash_accessor *names
  names.each do |name|
    [self,class<<self;self;end].each do |context|
      context.send(%Q{instance_eval}.to_s) do
        define_method(name) do
          inherited_hashes[name]
        end
        define_method(%Q{#{name}!}.to_sym) do
          inherited_hashes[name].to_hash!
        end
        define_method(%Q{#{name}=}.to_sym) do |hsh|
          raise ArgumentError, 'Only hashes are allowed' unless hsh.is_a? Hash
          inherited_hashes[name].replace(hsh)
        end
      end
    end
  end
end