Module: Stitcher::Register

Included in:
Accessor, DefineMethod, Require, Stitch
Defined in:
lib/stitcher/register.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.define_call_method(self_, name) ⇒ Object



13
14
15
16
17
18
19
20
21
# File 'lib/stitcher/register.rb', line 13

def self.define_call_method self_, name
  self_.__send__ :define_method, name do |*args, &block|
    method = self_.stitcher_method_detecting name, *args, &block

    return super(*args, &block) unless method
    method = method.stitcher_bind(self) if method.respond_to? :stitcher_bind
    method.call *args, &block
  end
end

.register(self_, name, sig = nil, method = self_.instance_method(name)) ⇒ Object



23
24
25
26
# File 'lib/stitcher/register.rb', line 23

def self.register self_, name, sig = nil, method = self_.instance_method(name)
  self_.stitcher_add name, sig, method
  Register.define_call_method self_, name
end

Instance Method Details

#stitcher_register(name, sig, &block) ⇒ Object



28
29
30
# File 'lib/stitcher/register.rb', line 28

def stitcher_register name, sig, &block
  Register.register(self, name, sig, block_given? ? block : instance_method(name))
end