Module: Meibo::DataModel::ClassMethods
- Defined in:
- lib/meibo/data_model.rb
Instance Method Summary collapse
- #define_attributes(attribute_names_to_header_fields) ⇒ Object
- #define_converters(converters) ⇒ Object
- #parse(csv) ⇒ Object
- #validate_header_fields(actual_header_fields) ⇒ Object
Instance Method Details
#define_attributes(attribute_names_to_header_fields) ⇒ Object
8 9 10 11 12 13 14 15 16 17 |
# File 'lib/meibo/data_model.rb', line 8 def define_attributes(attribute_names_to_header_fields) attribute_names_to_header_fields = attribute_names_to_header_fields.dup.freeze attribute_names = attribute_names_to_header_fields.keys.freeze header_fields = attribute_names_to_header_fields.values.freeze define_class_attribute(:attribute_names_to_header_fields, attribute_names_to_header_fields) define_class_attribute(:attribute_names, attribute_names) define_class_attribute(:header_fields, header_fields) attr_reader(*attribute_names, :extension_fields) end |
#define_converters(converters) ⇒ Object
19 20 21 22 23 24 25 |
# File 'lib/meibo/data_model.rb', line 19 def define_converters(converters) converters = converters.dup.freeze define_class_attribute(:converters, converters) define_header_converters define_parser_converters(converters) define_write_converters(converters) end |
#parse(csv) ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/meibo/data_model.rb', line 27 def parse(csv) return to_enum(:parse, csv) unless block_given? _parse(csv) do |row| yield new(**row.to_h) end end |
#validate_header_fields(actual_header_fields) ⇒ Object
35 36 37 38 39 40 41 42 |
# File 'lib/meibo/data_model.rb', line 35 def validate_header_fields(actual_header_fields) missing_header_fields = header_fields - actual_header_fields unless missing_header_fields.empty? = "missing header fields: #{missing_header_fields.join(",")}" raise MissingHeaderFieldsError.new(, missing_header_fields: missing_header_fields) end raise ScrambledHeaderFieldsError unless actual_header_fields.take(header_fields.size) == header_fields end |