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
31 32 33 34 35 36 37 38 |
# File 'lib/schema/parsers/array.rb', line 31 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
25 26 27 28 29 |
# File 'lib/schema/parsers/array.rb', line 25 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 |
# File 'lib/schema/parsers/array.rb', line 7 def parse_array(field_name, parsing_errors, value) case value when ::Array 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, :incompatable) nil else parsing_errors.add(field_name, :incompatable) nil end end |