11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
# File 'lib/class_kit/value_helper.rb', line 11
def parse(type: type, value: value)
begin
if type == Time
if value.is_a?(Time)
value = value
elsif value.is_a?(Integer) || value.is_a?(Float)
value = Time.at(value)
else
value = Time.parse(value)
end
elsif type == Date
if value.is_a?(Date)
value = value
elsif value.is_a?(Integer)
value = Date.at(value)
else
value = Date.parse(value)
end
elsif type == DateTime
if value.is_a?(DateTime)
value = value
elsif value.is_a?(Integer)
value = DateTime.at(value)
else
value = DateTime.parse(value)
end
elsif type == :bool
if value == true || value == false
value = value
elsif(/(true|t|yes|y|1)$/i === value.to_s.downcase)
value = true
elsif (/(false|f|no|n|0)$/i === value.to_s.downcase)
value = false
elsif value != nil
raise 'Unable to parse bool'
end
elsif type == Integer
value = Integer(value)
elsif type == Float
value = Float(value)
elsif type == BigDecimal
Float(value)
value = BigDecimal.new(value.to_s)
elsif type == String
value = String(value)
elsif type == Regexp
value = Regexp.new(value)
elsif type == Hash
if !value.is_a?(Hash)
raise 'Unable to parse Hash'
end
elsif type == Array
if !value.is_a?(Array)
raise 'Unable to parse Array'
end
else
raise 'Unable to parse'
end
rescue => e
raise ClassKit::Exceptions::InvalidParseValueError.new("Unable to parse value: #{value} into type: #{type}. Error: #{e}")
end
return value
end
|