Sha256: fa2243fac3be3c0037addb6106ccf22e98dec25482175805c372bba5464bbe8f

Contents?: true

Size: 1.29 KB

Versions: 16

Compression:

Stored size: 1.29 KB

Contents

module Tins
  module MethodDescription
    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 << '.' # XXX Better to use owner here as well?
        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
  end
end

Version data entries

16 entries across 16 versions & 5 rubygems

Version Path
logstash-filter-cache-redis-0.3.1 vendor/bundle/jruby/1.9/gems/tins-1.6.0/lib/tins/method_description.rb
logstash-filter-cache-redis-0.3.0 vendor/bundle/jruby/1.9/gems/tins-1.6.0/lib/tins/method_description.rb
logstash-filter-cache-redis-0.2.0 vendor/bundle/jruby/1.9/gems/tins-1.6.0/lib/tins/method_description.rb
logstash-filter-cache-redis-0.1.0 vendor/bundle/jruby/1.9/gems/tins-1.6.0/lib/tins/method_description.rb
suzuko-0.1.8 vendor/bundle/ruby/2.0.0/gems/tins-1.6.0/lib/tins/method_description.rb
suzuko-0.1.7 vendor/bundle/ruby/2.0.0/gems/tins-1.6.0/lib/tins/method_description.rb
mastermind_adeybee-0.1.4 vendor/bundle/ruby/2.2.0/gems/tins-1.6.0/lib/tins/method_description.rb
mastermind_adeybee-0.1.3 vendor/bundle/ruby/2.2.0/gems/tins-1.6.0/lib/tins/method_description.rb
mastermind_adeybee-0.1.2 vendor/bundle/ruby/2.2.0/gems/tins-1.6.0/lib/tins/method_description.rb
mastermind_adeybee-0.1.1 vendor/bundle/ruby/2.2.0/gems/tins-1.6.0/lib/tins/method_description.rb
vagrant-cloudstack-1.2.0 vendor/bundle/gems/tins-1.6.0/lib/tins/method_description.rb
tins-1.6.0 lib/tins/method_description.rb
tins-1.5.4 lib/tins/method_description.rb
tins-1.5.3 lib/tins/method_description.rb
vagrant-cloudstack-1.1.0 vendor/bundle/gems/tins-1.5.2/lib/tins/method_description.rb
tins-1.5.2 lib/tins/method_description.rb