Module: Opencdd::Parcel::CsvReader

Defined in:
lib/opencdd/parcel/csv_reader.rb

Constant Summary collapse

DEFAULT_ENCODING =
"UTF-8".freeze

Class Method Summary collapse

Class Method Details

.read(path, meta_class_irdi:, name: nil, col_sep: ",", encoding: DEFAULT_ENCODING) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/opencdd/parcel/csv_reader.rb', line 10

def self.read(path, meta_class_irdi:, name: nil, col_sep: ",", encoding: DEFAULT_ENCODING)
  rows = ::CSV.read(path, col_sep: col_sep, encoding: encoding)
  rows = rows.reject { |r| r.nil? || r.all? { |c| c.nil? || c.to_s.strip.empty? } }
  meta_code = extract_meta_code(meta_class_irdi)
  scaffold = Opencdd::Parcel::Sheet.scaffold(
    meta_class_irdi: meta_code,
    parcel_id: "IMPORT",
  )
  raw_rows = rows.map { |r| [nil, *r] }
  Opencdd::Parcel::Sheet.new(
    name: name || File.basename(path.to_s, ".*"),
    metadata: scaffold.,
    schema: scaffold.schema,
    raw_rows: raw_rows,
  )
end