Module: HashDelegate

Defined in:
lib/hash_delegate.rb,
lib/hash_delegate/version.rb

Constant Summary collapse

VERSION =
"0.0.1"

Instance Method Summary collapse

Instance Method Details

#hash_delegate(*args) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/hash_delegate.rb', line 6

def hash_delegate(*args)
  options = args.extract_options!
  self.class_eval do
    args.each do |key|
      define_method key do
        data = self.send(options[:to]) || {}
        data[key.to_s] || data[key.to_sym]
      end

      define_method "#{key}=" do |value|
        data = self.send(options[:to]) || self.send("#{options[:to]}=", {})
        data[key.to_s] = value
      end
    end
  end
end