Method: BioTable::TableApply#parse_row

Defined in:
lib/bio-table/table_apply.rb

#parse_row(line_num, line, header, column_idx, prev_fields, options) ⇒ Object

Take a line as a string and return it as a tuple of rowname and datafields



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/bio-table/table_apply.rb', line 55

def parse_row(line_num, line, header, column_idx, prev_fields, options)
  fields = LineParser::parse(line, options[:in_format], options[:split_on])
  return nil,nil if fields.compact == []
  if options[:pad_fields] and fields.size < header.size
    fields += [''] * (header.size - fields.size) 
  end
  fields = Formatter::strip_quotes(fields) if @strip_quotes
  fields = Formatter::transform_row_ids(@transform_ids, fields) if @transform_ids
  fields = Filter::apply_column_filter(fields,column_idx) 
  return nil,nil if fields.compact == []
  rowname = fields[0]
  data_fields = fields[@first_column..-1]
  if data_fields.size > 0
    return nil,nil if not Validator::valid_row?(line_num, data_fields, prev_fields)
    return nil,nil if not Filter::numeric(@num_filter,data_fields,header)
    return nil,nil if not Filter::generic(@filter,data_fields,header)
    (rowname, data_fields) = Rewrite::rewrite(@rewrite,rowname,data_fields)
  end
  return rowname, data_fields
end