class AmazonOrder::Writer
Public Class Methods
new(file_glob_pattern, options = {})
click to toggle source
# File lib/amazon_order/writer.rb, line 3 def initialize(file_glob_pattern, options = {}) @file_glob_pattern = file_glob_pattern @output_dir = options.fetch(:output_dir, 'tmp') end
Public Instance Methods
generate_csv()
click to toggle source
# File lib/amazon_order/writer.rb, line 16 def generate_csv require 'csv' FileUtils.mkdir_p(@output_dir) %w[orders products].map do |resource| next if data[resource].blank? csv_file = "#{@output_dir}/#{resource}#{Time.current.strftime('%Y%m%d%H%M%S')}.csv" puts " Writing #{csv_file}" CSV.open(csv_file, 'wb') do |csv| csv << attributes_for(resource) data[resource].each { |r| csv << r } end csv_file end end
print_orders()
click to toggle source
# File lib/amazon_order/writer.rb, line 8 def print_orders data['orders'] end
print_products()
click to toggle source
# File lib/amazon_order/writer.rb, line 12 def print_products data['products'] end
Private Instance Methods
attributes_for(resource)
click to toggle source
# File lib/amazon_order/writer.rb, line 46 def attributes_for(resource) case resource when 'orders' AmazonOrder::Parsers::Order::ATTRIBUTES when 'products' AmazonOrder::Parsers::Product::ATTRIBUTES end end
data()
click to toggle source
# File lib/amazon_order/writer.rb, line 33 def data @_data ||= begin data = {'orders' => [], 'products' => []} Dir.glob(@file_glob_pattern).each do |filepath| puts " Parsing #{filepath}" parser = AmazonOrder::Parser.new(filepath) data['orders'] += parser.orders.map(&:values) data['products'] += parser.orders.map(&:products).flatten.map(&:values) end data end end