Sha256: 6e77193349b7c65b4253ef350dca07d40c7faee37a7b3e65e99dba57e7170422
Contents?: true
Size: 1.17 KB
Versions: 8
Compression:
Stored size: 1.17 KB
Contents
class Eco::API::Common::People::DefaultParsers::XLSParser < Eco::API::Common::Loaders::Parser attribute :xls attr_accessor :already_required attr_reader :file def parser(file, deps) @file = file rows.tap {|r| @file = nil} end def serializer(array_hash, deps) raise "Not implemented. TODO: using axlsx or rubyXL gems. See: https://spin.atomicobject.com/2017/03/22/parsing-excel-files-ruby/" end private def headers raise "You should implement this method" end def sheet_name 0 end def workbook require_reading_libs! Roo::Spreadsheet.open(file) end def spreadheet(name_or_index = sheet_name) workbook.sheet(name_or_index) end def rows(target = headers) begin spreadheet.parse(header_search: target) rescue Roo::HeaderRowNotFoundError => e missing = JSON.parse(e.message) logger.warn("The input file is missing these headers: #{missing}") present = target - missing rows(present) end end def require_reading_libs! return if already_required require 'roo' require 'roo-xls' already_required = true end end
Version data entries
8 entries across 8 versions & 1 rubygems