Module: Schema::Parsers::Array
- Defined in:
- lib/schema/parsers/array.rb
Overview
Schema::Parsers::Array adds the array type to schemas
Class Method Summary collapse
- .convert_array_values(model, field_name, parsing_errors, data, schema_options) ⇒ Object
- .parse_string_array(model, field_name, parsing_errors, value, schema_options) ⇒ Object
Instance Method Summary collapse
Class Method Details
.convert_array_values(model, field_name, parsing_errors, data, schema_options) ⇒ Object
32 33 34 35 36 37 38 39 |
# File 'lib/schema/parsers/array.rb', line 32 def self.convert_array_values(model, field_name, parsing_errors, data, ) return data unless (data_type = [:data_type]) parser_method = "parse_#{data_type}" data.each_with_index.map do |datum, idx| model.send(parser_method, "#{field_name}:#{idx}", parsing_errors, datum) end end |
.parse_string_array(model, field_name, parsing_errors, value, schema_options) ⇒ Object
26 27 28 29 30 |
# File 'lib/schema/parsers/array.rb', line 26 def self.parse_string_array(model, field_name, parsing_errors, value, ) return nil unless (separator = [:separator]) convert_array_values(model, field_name, parsing_errors, value.split(separator), ) end |
Instance Method Details
#parse_array(field_name, parsing_errors, value) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/schema/parsers/array.rb', line 7 def parse_array(field_name, parsing_errors, value) case value when ::Array = self.class.schema[field_name] Array.convert_array_values(self, field_name, parsing_errors, value, ) when String = self.class.schema[field_name] if (data = Array.parse_string_array(self, field_name, parsing_errors, value, )) return data end parsing_errors.add(field_name, ::Schema::ParsingErrors::INCOMPATABLE) nil else parsing_errors.add(field_name, ::Schema::ParsingErrors::INCOMPATABLE) nil end end |