module Duracloud::TSV

Constants

CHUNK_SIZE

Public Instance Methods

csv() click to toggle source
# File lib/duracloud/tsv.rb, line 8
def csv
  @csv ||= CSV.new(tsv, csv_options)
end
load_tsv(io_or_str) click to toggle source
# File lib/duracloud/tsv.rb, line 41
def load_tsv(io_or_str)
  @tsv_source = io_or_str.is_a?(String) ? StringIO.new(io_or_str, "rb") : io_or_str
end
load_tsv_file(path) click to toggle source
# File lib/duracloud/tsv.rb, line 53
def load_tsv_file(path)
  load_tsv File.new(path, "rb")
end
rows() click to toggle source
# File lib/duracloud/tsv.rb, line 12
def rows
  @rows ||= Enumerator.new do |e|
    table.each { |row| e << row.to_hash }
  end
end
table() click to toggle source
# File lib/duracloud/tsv.rb, line 18
def table
  csv.rewind
  csv.read
ensure
  csv.rewind
end
to_s() click to toggle source
# File lib/duracloud/tsv.rb, line 57
def to_s
  tsv.to_s
end
tsv() { |chunk| ... } click to toggle source
# File lib/duracloud/tsv.rb, line 25
def tsv(&block)
  return unless tsv_source?
  begin
    tsv_source.rewind
    if block_given?
      while chunk = tsv_source.read(CHUNK_SIZE)
        yield chunk
      end
    else
      tsv_source.read
    end
  ensure
    tsv_source.rewind
  end
end
tsv_source() click to toggle source
# File lib/duracloud/tsv.rb, line 45
def tsv_source
  @tsv_source
end
tsv_source?() click to toggle source
# File lib/duracloud/tsv.rb, line 49
def tsv_source?
  !!@tsv_source
end

Private Instance Methods

csv_options() click to toggle source
# File lib/duracloud/tsv.rb, line 63
def csv_options
  { col_sep: "\t",
    quote_char: "`",
    headers: true,
    return_headers: false,
    header_converters: header_converters,
  }
end
header_converters() click to toggle source
# File lib/duracloud/tsv.rb, line 72
def header_converters
  lambda { |h| h.downcase.gsub(/-/, "_") }
end