Top Level Namespace

Instance Method Summary collapse

Instance Method Details

#deco(meth, &user_block) ⇒ Object



2
3
4
5
6
7
8
9
10
11
# File 'lib/deco.rb', line 2

def deco(meth, &user_block)
  m = instance_method(meth)
  
  Thread.current[:__deco_stack__] ||= []
  
  define_method(meth) do |*args, &block|
    Thread.current[:__deco_stack__].push(m.bind(self))
    user_block.call *args, &block
  end
end

#deco_super(*args, &block) ⇒ Object



13
14
15
# File 'lib/deco.rb', line 13

def deco_super(*args, &block)
  Thread.current[:__deco_stack__].pop.call(*args, &block)
end