Class: DriveTime::WorksheetConverter
- Inherits:
-
Object
- Object
- DriveTime::WorksheetConverter
- Defined in:
- lib/drive_time/converters/worksheet_converter.rb
Defined Under Namespace
Classes: NoClassWithTitleError, NoFieldNameError, NoKeyError, NoMethodError, PolymorphicAssociationError
Instance Attribute Summary collapse
-
#row_map ⇒ Object
Returns the value of attribute row_map.
Instance Method Summary collapse
- #convert(worksheet) ⇒ Object
-
#initialize(model_store, class_name_map, loader, namespace) ⇒ WorksheetConverter
constructor
A new instance of WorksheetConverter.
Constructor Details
#initialize(model_store, class_name_map, loader, namespace) ⇒ WorksheetConverter
Returns a new instance of WorksheetConverter.
13 14 15 16 17 18 19 |
# File 'lib/drive_time/converters/worksheet_converter.rb', line 13 def initialize(model_store, class_name_map, loader, namespace) @class_name_map = class_name_map @model_store = model_store @loader = loader @namespace = namespace @field_expander = FieldExpander.new(@loader) end |
Instance Attribute Details
#row_map ⇒ Object
Returns the value of attribute row_map.
5 6 7 |
# File 'lib/drive_time/converters/worksheet_converter.rb', line 5 def row_map @row_map end |
Instance Method Details
#convert(worksheet) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/drive_time/converters/worksheet_converter.rb', line 21 def convert(worksheet) Logger.log_as_header "Converting worksheet: #{worksheet.title}" # Use the spreadsheet name unless 'map_to_class' is set class_name = DriveTime.class_name_from_title(worksheet.title) class_name = @class_name_map.resolve_mapped_from_original class_name Logger.debug "Converting Worksheet #{worksheet.title} to class #{class_name}" # Check class exists - better we know immediately begin clazz = namespaced_class_name class_name rescue StandardError => error raise NoClassWithTitleError, "Worksheet named #{worksheet.title} doesn't exists as class #{class_name}" end rows = worksheet.rows.dup # Remove the first row and use it for field-names fields = rows.shift.map{ |row| row } # Reject rows of only empty strings (empty cells). rows.reject! {|row| row.all?(&:empty?)} rows.each do |row| generate_model_from_row clazz, worksheet.mapping, fields, row end end |