Sha256: d7e1b8a8cfd3be61c3dc21e23568ede4a7f19724429dd43f68b6baf9357c5149

Contents?: true

Size: 1.21 KB

Versions: 1

Compression:

Stored size: 1.21 KB

Contents

require_relative 'abstract_writer'

class CsvWriter < AbstractWriter
  def initialize
    @ext = '.csv'
    super
    @log.debug "initing #{self.class}"
  end

  def write_title title_ary
    super title_ary
    @log.debug "csv write title"
    @active_sheet.add_row title_ary
  end

  def write_new_row row_ary
    super row_ary
    @log.debug "csv write row: #{row_ary}"
    @active_sheet.add_row row_ary
  end

  def make_new_sheet name
    @log.debug "csv make new sheet"
    path = super name
    @sheets[path] = CsvSheet.new path, @ext
    @active_sheet = @sheets[path]
  end

  def make_file name
    super name
    make_new_sheet name
  end
end

require 'csv'
# == CSV Sheet
# extends sheet to give csv read/write-ability
# {file:https://docs.ruby-lang.org/en/2.1.0/CSV.html CSV usage documentation}

class CsvSheet < AbstractSheet
  def initialize path, ext
    file_name = "#{path}#{ext}"
    super file_name
    @csv_sheet = CSV.open(file_name, "wb")
  end

  def add_row row_ary
    super row_ary
    # @csv_sheet << ary
    CSV.open(@name, "ab") do |csv|
      csv << row_ary
    end
  end

  # @return ary of rows
  def read_rows
    @rows = CSV.read(@name)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cuker-0.3.15 lib/cuker/writer_helper/csv_writer.rb