module Schema::Parsers::Array
Schema::Parsers::Array
adds the array type to schemas
Public Class Methods
convert_array_values(model, field_name, parsing_errors, data, schema_options)
click to toggle source
# File lib/schema/parsers/array.rb, line 32 def self.convert_array_values(model, field_name, parsing_errors, data, schema_options) return data unless (data_type = schema_options[: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)
click to toggle source
# File lib/schema/parsers/array.rb, line 26 def self.parse_string_array(model, field_name, parsing_errors, value, schema_options) return nil unless (separator = schema_options[:separator]) convert_array_values(model, field_name, parsing_errors, value.split(separator), schema_options) end
Public Instance Methods
parse_array(field_name, parsing_errors, value)
click to toggle source
# File lib/schema/parsers/array.rb, line 7 def parse_array(field_name, parsing_errors, value) case value when ::Array schema_options = self.class.schema[field_name] Array.convert_array_values(self, field_name, parsing_errors, value, schema_options) when String schema_options = self.class.schema[field_name] if (data = Array.parse_string_array(self, field_name, parsing_errors, value, schema_options)) return data end parsing_errors.add(field_name, ::Schema::ParsingErrors::INCOMPATABLE) nil else parsing_errors.add(field_name, ::Schema::ParsingErrors::INCOMPATABLE) nil end end