Module: Convinius::ASM

Extended by:
ASM
Included in:
ASM
Defined in:
lib/convinius/asm.rb

Instance Method Summary collapse

Instance Method Details

#asm(opts = {}, &block) ⇒ Object



5
6
7
8
9
10
11
12
13
# File 'lib/convinius/asm.rb', line 5

def asm(opts = {}, &block)
  object = opts[:object] || Object.new
  opts = { :file => "(asm)", :line => 1, :method => :call }.merge! opts
  Rubinius.object_metaclass(object).dynamic_method(opts[:method], opts[:file], opts[:line]) do |g|
    block.arity > 0 ? yield(g) : g.instance_eval(&block)
    g.ret
  end
  object
end