class Qimport::Group

Public Class Methods

new(*headers) click to toggle source
# File lib/qimport/group.rb, line 3
def initialize(*headers)
  @headers = {}
  headers.each do |header|
    @headers[header] = {:lines => [], :columns => []}
  end
end

Public Instance Methods

line(data, header=nil) click to toggle source
# File lib/qimport/group.rb, line 10
def line(data, header=nil)
  header ||= @headers.keys.first.to_sym

  @headers[header][:columns] =
    (@headers[header][:columns] + data.keys).uniq
  @headers[header][:lines] << data

  self
end
to_s() click to toggle source
# File lib/qimport/group.rb, line 20
def to_s
  s = ''
  @headers.each do |k,v|
    header = k.to_s.upcase
    lines = v[:lines]
    columns = v[:columns]

    columns_to_s = columns.map{|c| c.to_s.upcase}.join("\t")

    s << "!#{header}\t#{columns_to_s}\r\n"

    lines.each do |line|
      empty_columns = array_to_empty_hash(columns)
      s << ([header] + empty_columns.merge(line).map{|k,v| v }).join("\t")
      s << "\r\n"
    end
  end
  s
end

Private Instance Methods

array_to_empty_hash(array) click to toggle source
# File lib/qimport/group.rb, line 41
def array_to_empty_hash(array)
  Hash[array.zip []]
end