class LegacyFacter::Util::Parser::Base

Attributes

filename[R]

Public Class Methods

new(filename, content = nil) click to toggle source
# File lib/facter/custom_facts/util/parser.rb, line 45
def initialize(filename, content = nil)
  @filename = filename
  @content  = content
end

Public Instance Methods

content() click to toggle source
# File lib/facter/custom_facts/util/parser.rb, line 50
def content
  @content ||= Facter::Util::FileHelper.safe_read(filename, nil)
end
parse_executable_output(output) click to toggle source
# File lib/facter/custom_facts/util/parser.rb, line 67
def parse_executable_output(output)
  res = nil
  begin
    res = YAML.safe_load(output, [Symbol, Time])
  rescue StandardError => e
    Facter.debug("Could not parse executable fact output as YAML or JSON (#{e.message})")
  end
  res = KeyValuePairOutputFormat.parse output unless res.is_a?(Hash)
  res
end
parse_results() click to toggle source
# File lib/facter/custom_facts/util/parser.rb, line 63
def parse_results
  raise ArgumentError, 'Subclasses must respond to parse_results'
end
results() click to toggle source

results on the base class is really meant to be just an exception handler wrapper.

# File lib/facter/custom_facts/util/parser.rb, line 56
def results
  parse_results
rescue StandardError => e
  Facter.log_exception(e, "Failed to handle #{filename} as #{self.class} facts: #{e.message}")
  nil
end