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