class Sequent::Core::Helpers::StringToValueParsers

Constants

PARSERS

Public Class Methods

for(klass) click to toggle source
# File lib/sequent/core/helpers/string_to_value_parsers.rb, line 72
def self.for(klass)
  new(klass)
end
new(klass) click to toggle source
# File lib/sequent/core/helpers/string_to_value_parsers.rb, line 76
def initialize(klass)
  if klass.is_a? Sequent::Core::Helpers::ArrayWithType
    @array_with_type = klass
    @klass = klass.class
  else
    @klass = klass
  end
end
parse_array(values, type_in_array) click to toggle source
# File lib/sequent/core/helpers/string_to_value_parsers.rb, line 60
def self.parse_array(values, type_in_array)
  fail "invalid value for array(): \"#{values}\"" unless values.is_a?(Array)

  values.map do |item|
    if item.respond_to?(:parse_attrs_to_correct_types)
      item.parse_attrs_to_correct_types
    else
      Sequent::Core::Helpers::StringToValueParsers.for(type_in_array).parse_from_string(item)
    end
  end
end
parse_to_bigdecimal(value) click to toggle source
# File lib/sequent/core/helpers/string_to_value_parsers.rb, line 30
def self.parse_to_bigdecimal(value)
  BigDecimal(value) unless value.blank?
end
parse_to_bool(value) click to toggle source
# File lib/sequent/core/helpers/string_to_value_parsers.rb, line 38
def self.parse_to_bool(value)
  if value.blank? && !(value.is_a?(TrueClass) || value.is_a?(FalseClass))
    nil
  else
    (value.is_a?(TrueClass) || value == 'true')
  end
end
parse_to_date(value) click to toggle source
# File lib/sequent/core/helpers/string_to_value_parsers.rb, line 46
def self.parse_to_date(value)
  return if value.blank?

  value.is_a?(Date) ? value : Date.iso8601(value.dup)
end
parse_to_date_time(value) click to toggle source
# File lib/sequent/core/helpers/string_to_value_parsers.rb, line 52
def self.parse_to_date_time(value)
  value.is_a?(DateTime) ? value : DateTime.deserialize_from_json(value)
end
parse_to_float(value) click to toggle source
# File lib/sequent/core/helpers/string_to_value_parsers.rb, line 34
def self.parse_to_float(value)
  Float(value) unless value.blank?
end
parse_to_integer(value) click to toggle source
# File lib/sequent/core/helpers/string_to_value_parsers.rb, line 24
def self.parse_to_integer(value)
  return value if value.is_a?(Integer)

  Integer(value, 10) unless value.blank?
end
parse_to_time(value) click to toggle source
# File lib/sequent/core/helpers/string_to_value_parsers.rb, line 56
def self.parse_to_time(value)
  value.is_a?(Time) ? value : Time.deserialize_from_json(value)
end

Public Instance Methods

parse_from_string(value) click to toggle source
# File lib/sequent/core/helpers/string_to_value_parsers.rb, line 85
def parse_from_string(value)
  parser = PARSERS.fetch(@klass) { |key| fail "Unsupported value type: #{key}" }
  if @array_with_type
    parser.call(value, @array_with_type.item_type)
  else
    parser.call(value)
  end
end