Module: Tins::MethodDescription

Defined in:
lib/tins/method_description.rb

Instance Method Summary collapse

Instance Method Details

#descriptionObject



3
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
34
35
36
# File 'lib/tins/method_description.rb', line 3

def description
  result = ''
  if owner <= Module
    result << receiver.to_s << '.'
  else
    result << owner.name.to_s << '#'
  end
  result << name.to_s << '('
  if respond_to?(:parameters)
    generated_name = 'x0'
    result << parameters.map { |p_type, p_name|
      p_name ||= generated_name.succ!
      case p_type
      when :block
        "&#{p_name}"
      when :rest
        "*#{p_name}"
      when :keyrest
        "**#{p_name}"
      when :req
        p_name
      when :opt
        "#{p_name}="
      when :key
        "#{p_name}:"
      else
        [ p_name, p_type ] * ':'
      end
    } * ','
  else
    result << arity.to_s
  end
  result << ')'
end