Class: Ruby::Rego::WithModifiers::WithModifierBuiltinResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby/rego/with_modifiers/with_modifier_builtin_override.rb

Overview

Resolves builtin replacement entries for with builtin overrides. :reek:DataClump

Instance Method Summary collapse

Constructor Details

#initialize(registry:, environment:, expression_evaluator:, location:) ⇒ WithModifierBuiltinResolver

Returns a new instance of WithModifierBuiltinResolver.

Parameters:



19
20
21
22
23
24
# File 'lib/ruby/rego/with_modifiers/with_modifier_builtin_override.rb', line 19

def initialize(registry:, environment:, expression_evaluator:, location:)
  @registry = registry
  @environment = environment
  @expression_evaluator = expression_evaluator
  @location = location
end

Instance Method Details

#replacement_entry(value) ⇒ Array

Parameters:

  • value (Object)

Returns:

  • (Array)


37
38
39
40
41
42
43
# File 'lib/ruby/rego/with_modifiers/with_modifier_builtin_override.rb', line 37

def replacement_entry(value)
  function_name = replacement_function_name(value)
  return function_replacement_entry(function_name) if function_name && function_replacement?(function_name)

  ensure_safe_replacement_variable(value, function_name)
  value_replacement_entry(value)
end

#target_entry(function_name) ⇒ Builtins::BuiltinRegistry::Entry

Parameters:

  • function_name (String)

Returns:

Raises:



28
29
30
31
32
33
# File 'lib/ruby/rego/with_modifiers/with_modifier_builtin_override.rb', line 28

def target_entry(function_name)
  return registry.entry_for(function_name) if registry.registered?(function_name)
  return function_entry(function_name) if function_defined?(function_name)

  raise EvaluationError.new("Undefined built-in function: #{function_name}", rule: nil, location: location)
end