Module: With

Defined in:
lib/ruby-with.rb

Instance Method Summary collapse

Instance Method Details

#with(context, start_set_hash = {}, &block) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/ruby-with.rb', line 5

def with context, start_set_hash={}, &block
  context.instance_eval do
    def set(hash)
      hash.map {|k,v| self.__send__("#{k}=", v) }
    end
    
    def <=(hash)
      set(hash)
    end
  end
  
  context.send :set, start_set_hash
  
  context.instance_exec(self, &block)
  
  class << context
    remove_method :set if method_defined? :set
    remove_method :<= if method_defined? :<=
  end
end