Method: BioDSL::CSV#each_array

Defined in:
lib/BioDSL/csv.rb

#each_array(options = {}) ⇒ Object

Method to iterate over a CSV IO object yielding arrays or an enumerator

CSV.each_array(options={}) { |item| block } -> ary
CSV.each_array(options={})                  -> Enumerator

Options:

* :include_header -
* :delimiter      -
* :select         -
* :reject         -


135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# File 'lib/BioDSL/csv.rb', line 135

def each_array(options = {})
  return to_enum :each_array unless block_given?

  delimiter = options[:delimiter] || @delimiter

  @io.each do |line|
    line.chomp!
    next if line.empty?

    fields = line.split(delimiter)

    if line[0] == '#'
      get_header(fields, options) unless @header
      get_fields(fields, options) unless @fields

      yield @header.map(&:to_s) if options[:include_header]
    else
      get_header(fields, options) unless @header
      get_fields(fields, options) unless @fields

      fields = fields.values_at(*@fields) if @fields

      determine_types(fields) unless @types

      yield fields.convert_types(@types)
    end
  end

  self
end