class Sequent::Core::Helpers::StringToValueParsers
Constants
- PARSERS
Public Class Methods
Source
# File lib/sequent/core/helpers/string_to_value_parsers.rb, line 72 def self.for(klass) new(klass) end
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
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
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
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
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
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
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
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
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
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