Module: Extree::Branch

Defined in:
lib/extree/branch.rb

Constant Summary collapse

@@redef_index =
0

Instance Method Summary collapse

Instance Method Details

#def!(name, &b) ⇒ Object



5
6
7
# File 'lib/extree/branch.rb', line 5

def def! name, &b
  define_method "#{Seed::BRANCH_METHOD_PREFIX}#{name}", &b
end

#redef!(name, &b) ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/extree/branch.rb', line 11

def redef! name, &b
  @@redef_index = index = @@redef_index.next
  redefined = "#{Seed::BRANCH_METHOD_PREFIX}#{index}_#{name}"
  branch_method = "#{Seed::BRANCH_METHOD_PREFIX}#{name}"
  alias_method redefined, branch_method
  define_method branch_method do |*a, **na, &bl|
    b.call redefined, *a, **na, &bl
  end
end