Method: Params::Param#value_type_check

Defined in:
lib/params.rb

#value_type_check(value) ⇒ Object

value_type_check method:

  1. Check if member:‘type’ is one of:Integer, Float, String or Boolean.

  2. input parameter:‘value’ class type is valid to override this parameter.

  3. Return value. The value to override with correct type. A cast from integer to Float will be made for Float parameters which are set with integer values.

  4. Check will be skipped for nil value.



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# File 'lib/params.rb', line 75

def value_type_check(value)
  if value.nil?
    return value
  end

  case( @type )
    when 'Integer' then
      if not @value.nil?
        if not ((value.class.eql? Integer) or
            (value.class.eql? Fixnum))
          raise "Parameter:'#{@name}' type:'Integer' but value type to override " \
                  "is:'#{value.class}'."
        end
      end
    when 'Float' then
      if not @value.nil?
        if not value.class.eql? Float
          if not ((value.class.eql? Integer) or
              (value.class.eql? Fixnum))
            raise("Parameter:'#{@name}' type:'Float' but value type to override " \
                    "is:'#{value.class}'.")
          else
            return value.to_f
          end
        end
      end
    when 'String' then
    when 'Path' then
      # TODO(kolman): Override the type check with regexp of path in Linux and/or Windows
      if not @value.nil?
        if not value.class.eql? String
          raise("Parameter:'#{@name}' type:'String' but value type to override " \
                  "is:'#{value.class}'.")
        end
      end
    when 'Boolean' then
      if not @value.nil?
        if not((value.class.eql? TrueClass) or (value.class.eql? FalseClass))
          raise("Parameter:'#{@name}' type:'Boolean' but value type to override " \
                  "is:'#{value.class}'.")
        end
      end
    when 'Complex' then
      unless @value.nil?
        unless (value.class.eql? Hash) or (value.class.eql? Array)
          raise("Parameter:'#{@name}' type:'Complex' but value type to override " \
                  "is:'#{value.class}'.")
        end
      end
    else
      raise("Parameter:'#{@name}' type:'#{@value.class}' but parameter " \
              "type to override:'#{value.class}' is not supported. " + \
              "Supported types are:Integer, Float, String or Boolean.")
  end
  return value
end