class ClassKit::ValueHelper
Public Class Methods
instance()
click to toggle source
# File lib/class_kit/value_helper.rb, line 4 def self.instance @@instance ||= new end
Public Instance Methods
parse(type:, value:)
click to toggle source
# File lib/class_kit/value_helper.rb, line 8 def parse(type:, value:) if type == Time if value.is_a?(Time) value elsif value.is_a?(Integer) || value.is_a?(Float) || value.is_a?(BigDecimal) Time.at(value) else Time.parse(value) end elsif type == Date if value.is_a?(Date) value elsif value.is_a?(Integer) Date.at(value) else Date.parse(value) end elsif type == DateTime if value.is_a?(DateTime) value elsif value.is_a?(Integer) DateTime.at(value) else DateTime.parse(value) end elsif type == :bool if value == true || value == false value elsif(/(true|t|yes|y|1)$/i === value.to_s.downcase) true elsif (/(false|f|no|n|0)$/i === value.to_s.downcase) false elsif value != nil raise 'Unable to parse bool' end elsif type == Integer Integer(value) elsif type == Float Float(value) elsif type == BigDecimal if value.is_a?(BigDecimal) value else value = value.to_s raise 'Unable to parse BigDecimal' unless value =~ /\A-?\d+(\.\d*)?/ BigDecimal(value) end elsif type == String String(value) elsif type == Regexp Regexp.new(value) elsif type == Hash raise 'Unable to parse Hash' unless value.is_a?(Hash) value elsif type == Array raise 'Unable to parse Array' unless value.is_a?(Array) value else raise 'Unable to parse' end rescue => e raise ClassKit::Exceptions::InvalidParseValueError, "Unable to parse value: #{value} into type: #{type}. Error: #{e}" end