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

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby/rego/evaluator/variable_collector/bound_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.



8
9
10
11
# File 'lib/ruby/rego/evaluator/variable_collector/bound_variable_collector.rb', line 8

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>)


15
16
17
# File 'lib/ruby/rego/evaluator/variable_collector/bound_variable_collector.rb', line 15

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>>)


22
23
24
25
26
27
28
# File 'lib/ruby/rego/evaluator/variable_collector/bound_variable_collector.rb', line 22

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