Class: Ruby::Rego::Evaluator::ModuleContextRegistry

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

Overview

Maps package keys to reference resolvers for cross-package dispatch.

Instance Method Summary collapse

Constructor Details

#initialize(resolvers_by_key) ⇒ ModuleContextRegistry

Returns a new instance of ModuleContextRegistry.

Parameters:



11
12
13
14
# File 'lib/ruby/rego/evaluator/module_context_registry.rb', line 11

def initialize(resolvers_by_key)
  @resolvers_by_key = resolvers_by_key
  @package_keys = resolvers_by_key.keys
end

Instance Method Details

#resolver_for(keys) ⇒ ReferenceResolver?

Find the resolver whose package is the longest prefix of keys.

Parameters:

  • keys (Array<Object>)

    reference key list

Returns:



20
21
22
23
# File 'lib/ruby/rego/evaluator/module_context_registry.rb', line 20

def resolver_for(keys)
  key = CompiledPolicySet.longest_prefix_key(package_keys, keys)
  key && resolvers_by_key[key]
end