module LegacyFacter::Util::Parser

Constants

STDERR_MESSAGE
TIME

This regex was taken from Psych and adapted github.com/ruby/psych/blob/d2deaa9adfc88fc0b870df022a434d6431277d08/lib/psych/scalar_scanner.rb#L9 It is used to detect Time in YAML, but we use it to wrap time objects in quotes to be treated as strings.

Public Class Methods

extension_matches?(filename, ext) click to toggle source

For support mutliple extensions you can pass an array of extensions as ext.

# File lib/facter/custom_facts/util/parser.rb, line 17
def self.extension_matches?(filename, ext)
  extension = case ext
              when String
                ext.downcase
              when Enumerable
                ext.collect(&:downcase)
              end
  [extension].flatten.to_a.include?(file_extension(filename).downcase)
end
file_extension(filename) click to toggle source
# File lib/facter/custom_facts/util/parser.rb, line 27
def self.file_extension(filename)
  File.extname(filename).sub('.', '')
end
parser_for(filename) click to toggle source
# File lib/facter/custom_facts/util/parser.rb, line 35
def self.parser_for(filename)
  registration = @parsers.detect { |k| k[1].call(filename) }

  if registration.nil?
    NothingParser.new
  else
    registration[0].new(filename)
  end
end
register(klass, &suitable) click to toggle source
# File lib/facter/custom_facts/util/parser.rb, line 31
def self.register(klass, &suitable)
  @parsers << [klass, suitable]
end