Class: Ruby::Rego::Evaluator::BoundVariableCollector

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby/rego/evaluator/variable_collector.rb

Overview

Collects variable names that become bound inside query bodies.

Instance Method Summary collapse

Constructor Details

#initializeBoundVariableCollector

Returns a new instance of BoundVariableCollector.



61
62
63
64
# File 'lib/ruby/rego/evaluator/variable_collector.rb', line 61

def initialize
  @explicit_names = [] # @type var @explicit_names: Array[String]
  @unify_names = [] # @type var @unify_names: Array[String]
end

Instance Method Details

#collect(literals) ⇒ Array<String>

Parameters:

  • literals (Array<Object>)

Returns:

  • (Array<String>)


68
69
70
# File 'lib/ruby/rego/evaluator/variable_collector.rb', line 68

def collect(literals)
  collect_details(literals)[:all]
end

#collect_details(literals) ⇒ Hash<Symbol, Array<String>>

:reek:TooManyStatements

Parameters:

  • literals (Array<Object>)

Returns:

  • (Hash<Symbol, Array<String>>)


75
76
77
78
79
80
81
# File 'lib/ruby/rego/evaluator/variable_collector.rb', line 75

def collect_details(literals)
  reset
  Array(literals).each { |literal| collect_from_literal(literal) }
  explicit = explicit_names.uniq
  unification = unify_names.uniq
  { explicit: explicit, unification: unification, all: (explicit + unification).uniq }
end