Sha256: d96e4c5d213ca4320f87fe3080d85c43e94b8098838f7a4a1dd1298d428e9582

Contents?: true

Size: 1.05 KB

Versions: 1

Compression:

Stored size: 1.05 KB

Contents

# This file allows us to choose the CSV library we want to use.

require 'csv'
# Using relevant core CSV library.
CSVLibrary = CSV

class << CSVLibrary
  # Is the library we're using FasterCSV?
  def fastercsv?
    not self.const_defined?(:Reader)
  end

  # Ensure that we can pass "mode" straight through the underlying IO object
  def foreach(path, **options, &block)
    return to_enum(__method__, path, **options) unless block
    open(path, options.delete(:mode) || 'r', **options) do |csv|
      csv.each(&block)
    end
  end

  def write_csv_to_string(data)
    self.generate do |csv|
      data.each { |line| csv << line }
    end
  end

  def write_csv_to_file(data, filepath, mode = 'w')
    self.open(filepath, mode) do |csv|
      data.each { |line| csv << line }
    end
  end

  def read_csv_from_file(filepath)
    self.read(filepath)
  end
end

# Forward port CSV::Cell, as it is sometimes
# serialised in YAML. :-(
class CSV::Cell < String
  def initialize(data = '', is_null = false)
    super(is_null ? '' : data)
  end

  def data
    to_s
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ndr_import-9.0.3 lib/ndr_import/csv_library.rb