Module: Multimethod::ObjectExtension::ClassMethods

Defined in:
lib/multimethod/core_extensions.rb

Instance Method Summary collapse

Instance Method Details

#multimethod(body, file = nil, line = nil) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/multimethod/core_extensions.rb', line 11

def multimethod(body, file = nil, line = nil)
  unless file && line
    fileline = caller(1)[0]
    if fileline && md = /^(.*):(\d+)$/.match(fileline)
      file, line = md[1], md[2].to_i
      
      newlines = 0
      body.gsub(/\n/s){|x| newlines = newlines + 1}
      line -= newlines
    end
    
    # $stderr.puts "file = #{file.inspect}, line = #{line.inspect}"
  end
  
  ::Multimethod::Table.instance.install_method(self, body, file, line)
end