Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: 09ffa1251a
Fetching contributors…

Cannot retrieve contributors at this time

file 29 lines (25 sloc) 0.885 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
require 'bamfcsv/bamfcsv'
require 'bamfcsv/table'

module BAMFCSV

  def self.read(thing_to_read, opts={})
    parse(File.read(thing_to_read), opts)
  end

  def self.parse(csv_str, opts={})
    return [] if csv_str.empty?
    # We need to do this because the C extension currently overwrites
    # the input, and all of String#clone, String#dup, and String.new
    # copy the pointer, not the contents. So we make a copy, parse
    # that, and throw away the copy.
    copy = "" + csv_str
    separator = opts.fetch(:separator, ',')
    raise InvalidSeparator, "Separator must be exactly one character long" if separator.size != 1
    raise InvalidSeparator, "Separator cannot be '\"'" if separator == '"'
    matrix = __parse_string(copy, separator)
    if opts[:headers]
      Table.new(matrix)
    else
      matrix
    end
  end

  class InvalidSeparator < StandardError; end
end
Something went wrong with that request. Please try again.