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 * ', '}"
if respond_to?(:parameters)
generated_name = 'x0'
parameter_array = parameters.map { |p_type, p_name|
unless p_name
generated_name = generated_name.succ
p_name = generated_name
end
Parameters.build(p_type, p_name)
}
signature = Signature.new(*parameter_array)
if style == :parameters
return signature
end
end
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
result << (signature || arity).to_s
if %i[ namespace name ].include?(style)
result << ?)
end
result
end