Class: Ruby::Rego::Evaluator::ReferenceResolver::StaticKeyBuilder

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

Overview

Builds static reference keys for cacheable references.

Constant Summary collapse

ROOT_NAMES =
%w[input data].freeze

Instance Method Summary collapse

Constructor Details

#initialize(reference) ⇒ StaticKeyBuilder

Returns a new instance of StaticKeyBuilder.

Parameters:



16
17
18
# File 'lib/ruby/rego/evaluator/reference_resolver.rb', line 16

def initialize(reference)
  @reference = reference
end

Instance Method Details

#callArray<Object>?

Returns:

  • (Array<Object>, nil)


21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/ruby/rego/evaluator/reference_resolver.rb', line 21

def call
  base = reference.base
  return nil unless base.is_a?(AST::Variable)
  return nil unless ROOT_NAMES.include?(base.name)

  keys = [] # @type var keys: Array[Object]
  reference.path.each do |segment|
    key = segment_key(segment)
    return nil unless key

    keys << key
  end
  keys
end