class FormStalker::Data::Parser
Attributes
attributes_before_type_cast[R]
object[R]
type_cast_schema[R]
Public Class Methods
new(object, type_cast_schema, attributes)
click to toggle source
# File lib/form_stalker/data/parser.rb, line 6 def initialize(object, type_cast_schema, attributes) @object = object @type_cast_schema = type_cast_schema @attributes_before_type_cast = attributes.dup end
Public Instance Methods
parse_attribute(key, value)
click to toggle source
# File lib/form_stalker/data/parser.rb, line 22 def parse_attribute(key, value) if object.respond_to?("parse_#{key}") return object.send("parse_#{key}", value) end return value unless type_cast_schema[key.to_sym] send("sanitize_#{type_cast_schema[key.to_sym]}", value) end
parse_attributes()
click to toggle source
# File lib/form_stalker/data/parser.rb, line 12 def parse_attributes attributes = {} attributes_before_type_cast.each do |key, value| attributes[key] = parse_attribute key, value end attributes end
sanitize_boolean(value)
click to toggle source
# File lib/form_stalker/data/parser.rb, line 32 def sanitize_boolean(value) ![false, 0, '0', 'false', 'FALSE'].include?(value) end
sanitize_datetime(value)
click to toggle source
# File lib/form_stalker/data/parser.rb, line 40 def sanitize_datetime(value) DateTime.parse(value) rescue value end
sanitize_integer(value)
click to toggle source
# File lib/form_stalker/data/parser.rb, line 36 def sanitize_integer(value) value.to_i if value.to_s =~ /\A[+-]?\d+\Z/ end