class RdbCSV

Constants

VERSION

Public Class Methods

foreach(file, options) { |row| ... } click to toggle source
# File lib/rdb_csv.rb, line 87
def self.foreach(file, options)
  open(file, options) do |csv|
    csv.each do |row|
      yield row
    end
  end
end
open(file, mode = 'r', options) { |csv| ... } click to toggle source
# File lib/rdb_csv.rb, line 54
def self.open(file, mode = 'r', options)
  db = options[:db] || :default
  delimiter = options[:delimiter] || "\t"
  quote = options[:delimiter] || '"'

  case mode
  when 'r'
    if db == :default
      ::CSV.open(file, mode, col_sep: delimiter) do |csv|
        yield csv
      end
    else
      File.open(file) do |f|
        csv = CSV.new(f, mode, db: db, delimiter: delimiter, quote: quote)
        yield csv
      end
    end
  when 'w'
    if db == :default
      ::CSV.open(file, mode, col_sep: delimiter) do |csv|
        yield csv
      end
    else
      File.open(file, 'w') do |f|
        csv = CSV.new(f, mode, db: db, delimiter: delimiter, quote: quote)
        yield csv

        csv.buffer_write
      end
    end
  end
end
parse(str, options) { |row| ... } click to toggle source
# File lib/rdb_csv.rb, line 95
def self.parse(str, options)
  db = options[:db] || :default
  delimiter = options[:delimiter] || "\t"
  quote = options[:delimiter] || '"'

  if options.key?(:db)
    reader = CSV.new(str, 'r', db: db, delimiter: delimiter, quote: quote)
  else
    reader = ::CSV.parse(str, col_sep: delimiter)
  end

  rows = []
  reader.each do |row|
    if block_given?
      yield row
    else
      rows << row
    end
  end

  return rows unless block_given?
end
parse_line(line, options) click to toggle source
# File lib/rdb_csv.rb, line 118
def self.parse_line(line, options)
  ary = nil
  parse(line, options).each{|row| ary = row; break}
  return ary
end