Sha256: a152fe2651efe01f6743564f756994136cde0b088fc4d6d74469b40b3590ff7a

Contents?: true

Size: 1.49 KB

Versions: 2

Compression:

Stored size: 1.49 KB

Contents

require 'parameters/param'

module Parameters
  class InstanceParam < Param

    # Owning object
    attr_reader :object

    #
    # Creates a new InstanceParam object.
    #
    # @param [Object] object
    #   The object containing the instance variable for the instance
    #   parameter.
    #
    # @param [Symbol, String] name
    #   The name of the instance parameter.
    #
    # @param [Class, Array[Class]] type
    #   The enforced type of the instance parameter.
    #
    # @param [String, nil] description
    #   The description of the instance parameter.
    #
    def initialize(object,name,type=nil,description=nil)
      super(name,type,description)

      @object = object
    end

    #
    # @return
    #   The value of the instance param.
    #
    def value
      @object.instance_variable_get(:"@#{@name}")
    end

    #
    # Sets the value of the instance param.
    #
    # @param [Object] value
    #   The new value of the instance param.
    #
    # @return [Object]
    #   The new value of the instance param.
    #
    def value=(value)
      @object.instance_variable_set(:"@#{@name}",coerce(value))
    end

    #
    # @return [String]
    #   Representation of the instance param.
    #
    def to_s
      text = @name.to_s

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

      return text
    end

    #
    # @return [String]
    #   Inspection of the instance params value.
    #
    def inspect
      value.inspect
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
parameters-0.2.1 lib/parameters/instance_param.rb
parameters-0.2.0 lib/parameters/instance_param.rb