Method: Facter::QueryParser.search_for_facts

Defined in:
lib/facter/framework/parsers/query_parser.rb

.search_for_facts(query, loaded_facts) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/facter/framework/parsers/query_parser.rb', line 47

def search_for_facts(query, loaded_facts)
  resolvable_fact_list = []
  query = query.to_s
  query_tokens = query.end_with?('.*') ? [query] : query.split('.')
  size = query_tokens.size

  # Try to match the most specific query_tokens to the least, returning the first match
  size.times do |i|
    query_token_range = 0..size - i - 1
    query_fact = query_tokens[query_token_range].join('.')
    resolvable_fact_list = get_facts_matching_tokens(query_tokens, query_fact, loaded_facts)

    return resolvable_fact_list if resolvable_fact_list.any?
  end

  resolvable_fact_list << SearchedFact.new(query, nil, query, :nil) if resolvable_fact_list.empty?

  resolvable_fact_list
end