Module: Opencdd::Parcel::CsvWriter

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

Defined Under Namespace

Classes: BuiltSheet

Constant Summary collapse

DEFAULT_ENCODING =
"UTF-8".freeze

Class Method Summary collapse

Class Method Details

.write_sheet(sheet, entities, target, source_language: SheetEmitter::DEFAULT_SOURCE_LANGUAGE, encoding: DEFAULT_ENCODING, write_bom: false) ⇒ Object



11
12
13
14
15
16
17
# File 'lib/opencdd/parcel/csv_writer.rb', line 11

def self.write_sheet(sheet, entities, target, source_language: SheetEmitter::DEFAULT_SOURCE_LANGUAGE, encoding: DEFAULT_ENCODING, write_bom: false)
  emitter = SheetEmitter.new(source_language: source_language)
  rows = emitter.emit_data_rows(sheet, entities)
  data_rows = rows.map { |row| row.drop(1) }
  write_csv(target, data_rows, encoding: encoding, write_bom: write_bom)
  target
end

.write_workbook(database, dir, parcel_id:, source_language: SheetEmitter::DEFAULT_SOURCE_LANGUAGE, encoding: DEFAULT_ENCODING, write_bom: false) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/opencdd/parcel/csv_writer.rb', line 19

def self.write_workbook(database, dir, parcel_id:, source_language: SheetEmitter::DEFAULT_SOURCE_LANGUAGE, encoding: DEFAULT_ENCODING, write_bom: false)
  require "fileutils"
  FileUtils.mkdir_p(dir)

  built_sheets = build_sheets(database, parcel_id, source_language)
  paths = []
  built_sheets.each do |built|
    filename = "#{parcel_id}_#{type_label(built.type)}.csv"
    path = File.join(dir, filename)
    write_sheet(built.sheet, built.entities, path,
                source_language: source_language, encoding: encoding, write_bom: write_bom)
    paths << path
  end
  paths
end