Class: Ruby::Rego::Builtins::BuiltinRegistryOverlay
- Inherits:
-
Object
- Object
- Ruby::Rego::Builtins::BuiltinRegistryOverlay
- Includes:
- BuiltinInvocation
- Defined in:
- lib/ruby/rego/builtins/registry.rb
Overview
Registry wrapper that overlays builtin entries without mutating the base registry.
Instance Method Summary collapse
-
#call(name, args) ⇒ Ruby::Rego::Value
-
#entry_for(name) ⇒ BuiltinRegistry::Entry
-
#initialize(base_registry:, overrides: {}) ⇒ BuiltinRegistryOverlay
constructor
A new instance of BuiltinRegistryOverlay.
-
#registered?(name) ⇒ Boolean
-
#with_override(name, entry) ⇒ BuiltinRegistryOverlay
Constructor Details
#initialize(base_registry:, overrides: {}) ⇒ BuiltinRegistryOverlay
Returns a new instance of BuiltinRegistryOverlay.
158 159 160 161 |
# File 'lib/ruby/rego/builtins/registry.rb', line 158 def initialize(base_registry:, overrides: {}) @base_registry = base_registry @overrides = overrides end |
Instance Method Details
#call(name, args) ⇒ Ruby::Rego::Value
174 175 176 177 |
# File 'lib/ruby/rego/builtins/registry.rb', line 174 def call(name, args) entry = entry_for(name) invoke_entry(entry, args) end |
#entry_for(name) ⇒ BuiltinRegistry::Entry
181 182 183 184 |
# File 'lib/ruby/rego/builtins/registry.rb', line 181 def entry_for(name) normalized = normalize_name(name) overrides.fetch(normalized) { base_registry.entry_for(normalized) } end |
#registered?(name) ⇒ Boolean
188 189 190 191 |
# File 'lib/ruby/rego/builtins/registry.rb', line 188 def registered?(name) normalized = normalize_name(name) overrides.key?(normalized) || base_registry.registered?(normalized) end |
#with_override(name, entry) ⇒ BuiltinRegistryOverlay
166 167 168 169 |
# File 'lib/ruby/rego/builtins/registry.rb', line 166 def with_override(name, entry) normalized = normalize_name(name) self.class.new(base_registry: base_registry, overrides: overrides.merge(normalized => entry)) end |