module PIM::MappingFunctionUtil

Public Instance Methods

conversion_error(value, type, e) click to toggle source
# File pim.rb, line 10000
def conversion_error value, type, e
  PIM.log_error("Could not parse '#{value}' to '#{type}'", e)
  return "[ERROR] '#{e.class}' in converting '#{value}' to '#{type}': #{e.message}"
end
convert_value(value, type, is_array = false) click to toggle source
# File pim.rb, line 9938
def convert_value value, type, is_array = false

  return value if value.nil? or type.nil?

  if is_array
    array_value = [*value].compact
    array_value.map! { |v| v = convert_value(v, type) }
    return array_value
  end

  value = case type.to_s
    when 'String'
      value.to_s
    when 'Integer'
      value.to_i
    when 'Float'
      value.to_f
    when 'Date'
      if value.is_a?(DateTime)
        value.to_date
      elsif value.is_a?(Date)
        value
      elsif value.is_a?(Numeric)
        Time.at(value / 1000).to_date
      else
        begin
          Date.parse(value.to_s)
        rescue Exception => e
          conversion_error value, type, e
        end
      end
    when 'DateTime'
      if value.is_a?(DateTime)
        value
      elsif value.is_a?(Date)
        value.to_datetime
      elsif value.is_a?(Numeric)
        Time.at(value / 1000).to_datetime
      else
        begin
          DateTime.parse(value.to_s)
        rescue Exception => e
          conversion_error value, type, e
        end
      end
    when 'Boolean'
      if value == true
        true
      elsif value == false
        false
      else
        %w(1 true T yes Y on).include?(value.to_s.downcase)
      end
    else
      PIM.log_error("Unknown type '#{type}' to convert value '#{value}' to")
      value
  end

  return value

end