Class: FormStalker::Data::Parser
- Inherits:
-
Object
- Object
- FormStalker::Data::Parser
- Defined in:
- lib/form_stalker/data/parser.rb
Instance Attribute Summary collapse
-
#attributes_before_type_cast ⇒ Object
readonly
Returns the value of attribute attributes_before_type_cast.
-
#object ⇒ Object
readonly
Returns the value of attribute object.
-
#type_cast_schema ⇒ Object
readonly
Returns the value of attribute type_cast_schema.
Instance Method Summary collapse
-
#initialize(object, type_cast_schema, attributes) ⇒ Parser
constructor
A new instance of Parser.
- #parse_attribute(key, value) ⇒ Object
- #parse_attributes ⇒ Object
- #sanitize_boolean(value) ⇒ Object
- #sanitize_datetime(value) ⇒ Object
- #sanitize_integer(value) ⇒ Object
Constructor Details
#initialize(object, type_cast_schema, attributes) ⇒ Parser
Returns a new instance of Parser.
6 7 8 9 10 |
# 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 |
Instance Attribute Details
#attributes_before_type_cast ⇒ Object (readonly)
Returns the value of attribute attributes_before_type_cast.
4 5 6 |
# File 'lib/form_stalker/data/parser.rb', line 4 def attributes_before_type_cast @attributes_before_type_cast end |
#object ⇒ Object (readonly)
Returns the value of attribute object.
4 5 6 |
# File 'lib/form_stalker/data/parser.rb', line 4 def object @object end |
#type_cast_schema ⇒ Object (readonly)
Returns the value of attribute type_cast_schema.
4 5 6 |
# File 'lib/form_stalker/data/parser.rb', line 4 def type_cast_schema @type_cast_schema end |
Instance Method Details
#parse_attribute(key, value) ⇒ Object
22 23 24 25 26 27 28 29 30 |
# 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 ⇒ Object
12 13 14 15 16 17 18 19 20 |
# 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) ⇒ Object
32 33 34 |
# File 'lib/form_stalker/data/parser.rb', line 32 def sanitize_boolean(value) ![false, 0, '0', 'false', 'FALSE'].include?(value) end |
#sanitize_datetime(value) ⇒ Object
40 41 42 43 44 |
# File 'lib/form_stalker/data/parser.rb', line 40 def sanitize_datetime(value) DateTime.parse(value) rescue value end |
#sanitize_integer(value) ⇒ Object
36 37 38 |
# File 'lib/form_stalker/data/parser.rb', line 36 def sanitize_integer(value) value.to_i if value.to_s =~ /\A[+-]?\d+\Z/ end |