Sha256: 1a0df1cbaf27c8417517e773bd185a9adae8d4adad7691f3a524a6434acc8147

Contents?: true

Size: 801 Bytes

Versions: 16

Compression:

Stored size: 801 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

16 entries across 16 versions & 1 rubygems

Version Path
csv-utils-0.3.24 lib/csv_utils/csv_wrapper.rb
csv-utils-0.3.23 lib/csv_utils/csv_wrapper.rb
csv-utils-0.3.22 lib/csv_utils/csv_wrapper.rb
csv-utils-0.3.21 lib/csv_utils/csv_wrapper.rb
csv-utils-0.3.20 lib/csv_utils/csv_wrapper.rb
csv-utils-0.3.19 lib/csv_utils/csv_wrapper.rb
csv-utils-0.3.18 lib/csv_utils/csv_wrapper.rb
csv-utils-0.3.17 lib/csv_utils/csv_wrapper.rb
csv-utils-0.3.16 lib/csv_utils/csv_wrapper.rb
csv-utils-0.3.15 lib/csv_utils/csv_wrapper.rb
csv-utils-0.3.14 lib/csv_utils/csv_wrapper.rb
csv-utils-0.3.13 lib/csv_utils/csv_wrapper.rb
csv-utils-0.3.12 lib/csv_utils/csv_wrapper.rb
csv-utils-0.3.11 lib/csv_utils/csv_wrapper.rb
csv-utils-0.3.10 lib/csv_utils/csv_wrapper.rb
csv-utils-0.3.9 lib/csv_utils/csv_wrapper.rb