Sha256: 734616e011a2de4e32269051caaf6d2a6ecf64e18ea64a643b51f601f399a99f

Contents?: true

Size: 799 Bytes

Versions: 4

Compression:

Stored size: 799 Bytes

Contents

# Wraps a CSV object, if wrapper opens the csv file it will close it
class CSVUtils::CSVWrapper
  attr_reader :csv

  def initialize(csv, mode, csv_options)
    open(csv, mode, csv_options)
  end

  def self.open(file, mode, csv_options = {})
    csv = new(file, mode, csv_options)

    if block_given?
      yield csv
      csv.close
    else
      csv
    end
  end

  def open(csv, mode, csv_options)
    if csv.is_a?(String)
      @close_when_done = true
      @csv = CSV.open(csv, mode, csv_options)
    else
      @close_when_done = false
      @csv = csv
    end
  end

  def <<(row)
    csv << row
  end

  def shift
    csv.shift
  end

  def rewind
    csv.rewind
  end

  def close
    csv.close if close_when_done?
  end

  private

  def close_when_done?
    @close_when_done
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
csv-utils-0.3.8 lib/csv_utils/csv_wrapper.rb
csv-utils-0.3.7 lib/csv_utils/csv_wrapper.rb
csv-utils-0.3.6 lib/csv_utils/csv_wrapper.rb
csv-utils-0.3.5 lib/csv_utils/csv_wrapper.rb