Module: Debugging

Defined in:
lib/debugging/q.rb,
lib/debugging/at.rb,
lib/debugging/re.rb,
lib/debugging/mof.rb,
lib/debugging/beep.rb,
lib/debugging/repl.rb,
lib/debugging/version.rb,
lib/debugging/callstack.rb,
lib/debugging/howtocall.rb

Constant Summary collapse

VERSION =
"1.1.0".freeze

Instance Method Summary collapse

Instance Method Details

#howtocall(object = self, method_or_proc) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/debugging/howtocall.rb', line 4

def howtocall(object = self, method_or_proc)
  if method_or_proc.is_a? Proc
    params = method_or_proc.parameters
    template = "call(%s)"
  else
    unless method_or_proc.is_a?(Method) || method_or_proc.is_a?(UnboundMethod)
      method_or_proc = object.method(method_or_proc)
    end
    params = method_or_proc.parameters
    template = "#{method_or_proc.name}(%s)"
  end

  sig = params.map{ |type, name|
    param = ""
    param << "*" if type == :rest
    param << "**" if type == :keyrest
    param << "&" if type == :block
    name = ?? if !name && !(type == :rest || type == :keyrest)
    if type == :opt || type == :key
      param << Paint[name, :underline]
    else
      param << name.to_s
    end
    param << ":" if type == :key || type == :keyreq
    param
  }*", "

  puts template %(sig)
  nil
end