class Lspci::Parser

Attributes

command_result[R]

Public Class Methods

new(command_result=nil) click to toggle source
# File lib/lspci/parser.rb, line 11
def initialize(command_result=nil)
  @command_result = command_result
end
parse(command_result=nil) click to toggle source
# File lib/lspci/parser.rb, line 7
def self.parse(command_result=nil)
  new(command_result).parse
end

Public Instance Methods

lspci_output() click to toggle source
# File lib/lspci/parser.rb, line 15
def lspci_output
  @lspci_output ||= `lspci -vmm`
end
parse() click to toggle source
# File lib/lspci/parser.rb, line 19
def parse
  command_result = (self.command_result || lspci_output)
  split_devices  = split_devices(command_result)

  split_devices.map { |device| parse_device(device) }
end

Private Instance Methods

parse_device(device_string) click to toggle source
# File lib/lspci/parser.rb, line 33
def parse_device(device_string)
  device = HashWithIndifferentAccess.new
  delimiter = ":\t"
  details = device_string.split("\n")

  details.each do |line|
    split_details = line.split(delimiter)
    device[split_details.shift.downcase] = split_details.map(&:strip).join(' ').strip
  end

  device
end
split_devices(command_result) click to toggle source
# File lib/lspci/parser.rb, line 28
def split_devices(command_result)
  delimiter = "\n\n"
  command_result.split(delimiter)
end