class SunatBooks::Csv::Base
Attributes
file[RW]
Public Class Methods
new(tickets, options = {})
click to toggle source
# File lib/sunat_books/csv/base.rb, line 14 def initialize(tickets, options = {}) # options # - layout => Array of strings used to get data for csv # - filename raise SunatBooks::Csv::OptionError, "Layout option is required" if options[:layout].nil? filename = options[:filename] || "#{tmp_path}book.csv" fields = options[:layout] get_file(filename, fields, tickets) end
Public Instance Methods
append_data(tickets, filename, fields)
click to toggle source
# File lib/sunat_books/csv/base.rb, line 44 def append_data(tickets, filename, fields) tickets&.each do |ticket| data = [] fields&.each do |field| data << available_value?(ticket, field) end append_to_csv(filename, data, "a+") end end
append_headers(filename, fields)
click to toggle source
# File lib/sunat_books/csv/base.rb, line 40 def append_headers(filename, fields) append_to_csv(filename, fields, "w+") end
append_to_csv(filename, data, mode)
click to toggle source
# File lib/sunat_books/csv/base.rb, line 54 def append_to_csv(filename, data, mode) return if data.nil? CSV.open(filename, mode) do |csv| csv << data end end
get_file(filename, fields, tickets)
click to toggle source
# File lib/sunat_books/csv/base.rb, line 25 def get_file(filename, fields, tickets) send("file=", filename) File.exist?(filename) ? File.delete(filename) : nil FileUtils.touch(filename) append_headers(filename, fields) append_data(tickets, filename, fields) end
tmp_path()
click to toggle source
# File lib/sunat_books/csv/base.rb, line 33 def tmp_path dir = File.dirname(__FILE__) tmp_path = "#{dir}/tmp/" Dir.mkdir(tmp_path) unless Dir.exist?(tmp_path) tmp_path end