class RdbCSV::CSV

Constants

WRITE_BUFFER_SIZE

Public Class Methods

new(f, mode, options) click to toggle source
# File lib/rdb_csv.rb, line 10
def initialize(f, mode, options)
  @f = f
  @mode = options[:mode]
  @db = options[:db]
  @delimiter = options[:delimiter] || "\t"
  @escape = "\\"
  @linefeed = "\n"
  quote = options[:quote] || '"'

  # quote option is valid only mysql
  @quote = options[:db] == :mysql ? quote : '"'
end

Public Instance Methods

<<(array) click to toggle source
# File lib/rdb_csv.rb, line 35
def <<(array)
  raise IOError if @mode == 'r'

  @lines ||= []

  row = Row.new(array)
  line = row.join(@escape, @db, @delimiter)
  @lines << line + @linefeed
  buffer_write if @lines.size >= WRITE_BUFFER_SIZE
end
buffer_write() click to toggle source
# File lib/rdb_csv.rb, line 46
def buffer_write
  return if @lines.nil? || @lines.size.zero?

  @f.write(@lines.join)
  @lines = []
end
each() { |unescape| ... } click to toggle source
# File lib/rdb_csv.rb, line 23
def each
  raise IOError if @mode == 'w'

  reader = Reader.new(@f, @db, @delimiter, escape: @escape, linefeed: @linefeed, quote: @quote)

  reader.each_line do |row|
    yield row.unescape(@escape, @db, @delimiter)
  end
end