Sha256: d568247993a3c26fd57478bd087a5a9fd008139bf1ec29517785933f11ed1be6

Contents?: true

Size: 1.54 KB

Versions: 3

Compression:

Stored size: 1.54 KB

Contents

module Inch
  module CodeObject
    module Proxy
      # Proxy class for method parameters
      class MethodParameterObject
        def initialize(attributes)
          @attributes = attributes
        end

        def [](key)
          @attributes[key]
        end

        BAD_NAME_EXCEPTIONS = %w(id)
        BAD_NAME_THRESHOLD = 3

        # @return [Boolean] +true+ if the name of the parameter is
        #   uncommunicative
        def bad_name?
          return false if BAD_NAME_EXCEPTIONS.include?(name)
          name.size < BAD_NAME_THRESHOLD || name =~ /[0-9]$/
        end

        # @return [Boolean] +true+ if the parameter is a block
        def block?
          self[:block?]
        end

        # @return [Boolean] +true+ if an additional description given?
        def described?
          self[:described?]
        end

        # @return [Boolean] +true+ if the parameter is mentioned in the docs
        def mentioned?
          self[:mentioned?]
        end

        def name
          self[:name]
        end
        alias_method :fullname, :name

        # @return [Boolean] +true+ if the parameter is a splat argument
        def splat?
          self[:splat?]
        end

        # @return [Boolean] +true+ if the type of the parameter is defined
        def typed?
          self[:typed?]
        end

        # @return [Boolean] +true+ if the parameter is mentioned in the docs,
        #   but not present in the method's signature
        def wrongly_mentioned?
          self[:wrongly_mentioned?]
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
inch-0.4.10 lib/inch/code_object/proxy/method_parameter_object.rb
inch-0.4.9 lib/inch/code_object/proxy/method_parameter_object.rb
inch-0.4.8 lib/inch/code_object/proxy/method_parameter_object.rb