Sha256: 952dca7a62eec043ce389abab0c5af059c559597752ea9b8fdd9fc5643e10b44

Contents?: true

Size: 1.66 KB

Versions: 36

Compression:

Stored size: 1.66 KB

Contents

module Inch
  module Language
    module Ruby
      module CodeObject
        # 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
end

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
inch-0.5.7 lib/inch/language/ruby/code_object/method_parameter_object.rb
inch-0.5.6 lib/inch/language/ruby/code_object/method_parameter_object.rb
inch-0.5.5 lib/inch/language/ruby/code_object/method_parameter_object.rb
inch-0.5.4 lib/inch/language/ruby/code_object/method_parameter_object.rb
inch-0.5.3 lib/inch/language/ruby/code_object/method_parameter_object.rb
inch-0.5.2 lib/inch/language/ruby/code_object/method_parameter_object.rb
inch-0.5.1 lib/inch/language/ruby/code_object/method_parameter_object.rb
inch-0.5.0 lib/inch/language/ruby/code_object/method_parameter_object.rb
inch-0.5.0.rc11 lib/inch/language/ruby/code_object/method_parameter_object.rb
inch-0.5.0.rc10 lib/inch/language/ruby/code_object/method_parameter_object.rb
inch-0.5.0.rc9 lib/inch/language/ruby/code_object/method_parameter_object.rb
inch-0.5.0.rc8 lib/inch/language/ruby/code_object/method_parameter_object.rb
inch-0.5.0.rc7 lib/inch/language/ruby/code_object/method_parameter_object.rb
inch-0.5.0.rc6 lib/inch/language/ruby/code_object/method_parameter_object.rb
inch-0.5.0.rc5 lib/inch/language/ruby/code_object/method_parameter_object.rb
inch-0.5.0.rc4 lib/inch/language/ruby/code_object/method_parameter_object.rb