class Fleetctl::TableParser

Attributes

raw[RW]

Public Class Methods

new(raw) click to toggle source
# File lib/fleetctl/table_parser.rb, line 11
def initialize(raw)
  @raw = raw
end
parse(raw) click to toggle source
# File lib/fleetctl/table_parser.rb, line 6
def parse(raw)
  self.new(raw).parse
end

Public Instance Methods

parse() click to toggle source
# File lib/fleetctl/table_parser.rb, line 15
def parse
  rows = raw.split("\n").map { |row| row.split(/\t+/) }
  header = rows.shift
  if header
    keys = header.map { |key| key.downcase.to_sym }
    [].tap do |output|
      rows.each do |row|
        scrubbed_row = row.map { |val| val == '-' ? nil : val }
        output << Hash[keys.zip(scrubbed_row)]
      end
    end
  else
    Fleetctl.logger.error('ERROR in Fleetctl::TableParser.parse - no header row found')
    []
  end
end