Class: Ruby::Rego::WithModifiers::WithModifierBuiltinOverride

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

Overview

Temporarily replaces a builtin with another builtin implementation. :reek:DataClump

Instance Method Summary collapse

Constructor Details

#initialize(name:, value:, expression_evaluator:, location: nil) ⇒ WithModifierBuiltinOverride

Returns a new instance of WithModifierBuiltinOverride.

Parameters:



145
146
147
148
149
150
# File 'lib/ruby/rego/with_modifiers/with_modifier_builtin_override.rb', line 145

def initialize(name:, value:, expression_evaluator:, location: nil)
  @name = name.to_s
  @value = value
  @expression_evaluator = expression_evaluator
  @location = location
end

Instance Method Details

#apply(environment) {|environment| ... } ⇒ Object

Yield Parameters:

Returns:

  • (Object)


154
155
156
157
158
159
160
161
162
163
164
165
# File 'lib/ruby/rego/with_modifiers/with_modifier_builtin_override.rb', line 154

def apply(environment, &block)
  block ||= ->(_env) {}
  registry = environment.builtin_registry
  resolver = WithModifierBuiltinResolver.new(
    registry: registry,
    environment: environment,
    expression_evaluator: expression_evaluator,
    location: location
  )
  override_registry = registry.with_override(name, override_entry(resolver))
  environment.with_builtin_registry(override_registry, &block)
end