Sha256: f2d6da50bddfff8a86af177915f7b26d76610794d051a00d8a302ff0352c7fe5

Contents?: true

Size: 1.15 KB

Versions: 1

Compression:

Stored size: 1.15 KB

Contents

require 'parameters/types'

module Parameters
  class Param

    # Name of parameter
    attr_reader :name

    # Enforced type of the parameter
    attr_reader :type

    # Description of parameter
    attr_reader :description

    #
    # Creates a new Param object.
    #
    # @param [Symbol, String] name
    #   The name of the parameter.
    #
    # @param [Class, nil] type
    #   The enforced type of the parameter.
    #
    # @param [String, nil] description
    #   The description of the parameter.
    #
    def initialize(name,type=nil,description=nil)
      @name = name.to_sym
      @type = if (type.kind_of?(Types::Type)) ||
                 (type.kind_of?(Class) && (type < Types::Type))
                type
              else
                Types[type]
              end

      @description = description
    end

    protected

    #
    # Coerces the value into the param type.
    #
    # @param [Object] value
    #   The value to coerce.
    #
    # @return [Object]
    #   The coerced value.
    #
    def coerce(value)
      if (value.nil? || (@type === value))
        value
      else
        @type.coerce(value)
      end
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
parameters-0.3.1 lib/parameters/param.rb