Sha256: fda7e3c07486c07dc00f3328509a61d999139a717b9dcc7035a3fb2abc48a735

Contents?: true

Size: 1.83 KB

Versions: 2

Compression:

Stored size: 1.83 KB

Contents

require 'parameters/param'

module Parameters
  class ClassParam < Param

    # Default value of the class parameter
    attr_reader :value

    #
    # Creates a new ClassParam object.
    #
    # @param [Symbol, String] name
    #   The name of the class parameter.
    #
    # @param [Class, Array[Class]] type
    #   The enforced type of the class parameter.
    #
    # @param [String, nil] description
    #   The description of the class parameter.
    #
    # @param [Object, nil] value
    #   The default value of the class parameter.
    #
    def initialize(name,type=nil,description=nil,value=nil)
      super(name,type,description)

      @value = value
    end

    #
    # Sets the value of the class param.
    #
    # @param [Object] new_value
    #   The new value of the class param.
    #
    # @return [Object]
    #   The new value of the class param.
    #
    # @since 0.2.0
    #
    def value=(new_value)
      @value = coerce(new_value)
    end

    #
    # Creates an instance parameter from the class param.
    #
    # @param [Object] object
    #   The object the instance parameter should be connected to.
    #
    # @return [InstanceParam]
    #   The new instance parameter.
    #
    # @since 0.3.0
    #
    # @api semipublic
    #
    def to_instance(object)
      InstanceParam.new(
        object,
        @name,
        @type,
        @description,
        @value
      )
    end

    #
    # @return [String]
    #   The representation of the class param.
    #
    def to_s
      text = @name.to_s

      text << "\t[#{@value.inspect}]" if @value
      text << "\t#{@description}"     if @description

      return text
    end

    #
    # Inspects the class parameter.
    #
    # @return [String]
    #   Inspection of the class params value.
    #
    def inspect
      "#<#{self.class}: #{@value.inspect}>"
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
parameters-0.4.4 lib/parameters/class_param.rb
parameters-0.4.3 lib/parameters/class_param.rb