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
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/tins/method_description.rb', line 3
def description(style: :namespace)
valid_styles = %i[ namespace name parameters ]
valid_styles.include?(style) or
raise ArgumentError, "style has to be one of #{valid_styles * ', '}"
result = ''
if style == :namespace
if owner <= Module
result << receiver.to_s << '.' else
result << owner.name.to_s << '#'
end
end
if %i[ namespace name ].include?(style)
result << name.to_s << '('
end
if respond_to?(:parameters)
generated_name = 'x0'
result << parameters.map { |p_type, p_name|
p_name ||= generated_name.succ!.dup
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}:?"
when :keyreq
"#{p_name}:"
else
[ p_name, p_type ] * ':'
end
} * ','
else
result << arity.to_s
end
if %i[ namespace name ].include?(style)
result << ')'
end
result
end
|