Class: Object

Inherits:
BasicObject
Defined in:
lib/dup_eval.rb,
lib/dup_eval.rb

Instance Method Summary collapse

Instance Method Details

#dup_eval(*mods, &blk) ⇒ Object Also known as: dup_eval_with



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/dup_eval.rb', line 65

def dup_eval(*mods, &blk)
    #default value is self
    mods = self if mods.empty?
    
    duped_context = blk._context.dup
    #make sure the singleton class is in existence
    class << duped_context; self; end

    duped_context.redirect_tbls(blk._context)

    duped_context.gen_extend(*mods)
    begin
        m = duped_context.is_a?(Module) ? :class_eval : :instance_eval
        duped_context.send(m, &blk)
    ensure
        duped_context.restore_tbls
    end
end