Sha256: 22eefcd43366ca14c49fdbf707e7cf8c1cff1a0839d34fd41de53e9615138909

Contents?: true

Size: 948 Bytes

Versions: 7

Compression:

Stored size: 948 Bytes

Contents

module Tins
  module MethodDescription
    def description
      result = ''
      if owner <= Module
        result << receiver.to_s << '.' # XXX Better to use owner here as well?
      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}:?"
          when :keyreq
            "#{p_name}:"
          else
            [ p_name, p_type ] * ':'
          end
        } * ','
      else
        result << arity.to_s
      end
      result << ')'
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
tins-1.4.1 lib/tins/method_description.rb
tins-1.4.0 lib/tins/method_description.rb
tins-1.3.5 lib/tins/method_description.rb
tins-1.3.4 lib/tins/method_description.rb
tins-1.3.3 lib/tins/method_description.rb
tins-1.3.2 lib/tins/method_description.rb
tins-1.3.1 lib/tins/method_description.rb