Sha256: 63ae8b14194f9bb0f9dad46ed8b2e73f0502972c6b60cd76004609df9edbd62a
Contents?: true
Size: 1.81 KB
Versions: 4
Compression:
Stored size: 1.81 KB
Contents
module TableImporter class RooSpreadsheetSource < Source def get_headers @headers end def get_preview_lines(start_point = 1, end_point = 10) begin @headers = @mapping.present? && @mapping != false ? convert_headers : @headers start_point += 1 if @headers_present == true lines = clean_chunks([get_lines(start_point, end_point, true)], @compulsory_headers)[0][:lines] if lines.first.nil? get_preview_lines(start_point+10, end_point+10) else lines[0..8] end rescue SystemStackError, NoMethodError raise TableImporter::EmptyFileImportError.new end end def get_lines(start, number_of_lines, preview_lines = false) @last_row ||= @file.last_row finish = [@last_row, start + number_of_lines].min mapped_lines = [] range = preview_lines ? (start..finish) : (start...finish) range.each do |row_number| mapped_lines << Hash[@headers.zip(@file.row(row_number))] end mapped_lines end def convert_headers new_headers = @headers_present ? @file.row(1) : default_headers new_headers = default_headers(new_headers.count) return new_headers unless @mapping @mapping.each do |key, value| if value.to_i.to_s == value.to_s new_headers[value.to_i] = key.to_sym end end new_headers end def get_chunks(chunk_size) @headers = convert_headers @last_row ||= @file.last_row chunks = [] start_point = @headers_present ? 2 : 1 while chunks.count <= @last_row/chunk_size chunks << get_lines(start_point, chunk_size) start_point += chunk_size end chunks.last << Hash[@headers.zip(@file.row(@last_row))] clean_chunks(chunks, @compulsory_headers) end end end
Version data entries
4 entries across 4 versions & 1 rubygems