Class: IgniterLang::TemporalAccessRuntime::RuntimeMachineHook
- Inherits:
-
Object
- Object
- IgniterLang::TemporalAccessRuntime::RuntimeMachineHook
- Defined in:
- lib/igniter_lang/temporal_access_runtime.rb
Instance Method Summary collapse
- #evaluate(access_node, temporal_inputs:, inputs:) ⇒ Object
-
#initialize(backend:, capabilities: nil) ⇒ RuntimeMachineHook
constructor
A new instance of RuntimeMachineHook.
- #load_check(contract:, requirements: {}) ⇒ Object
Constructor Details
#initialize(backend:, capabilities: nil) ⇒ RuntimeMachineHook
Returns a new instance of RuntimeMachineHook.
120 121 122 123 124 |
# File 'lib/igniter_lang/temporal_access_runtime.rb', line 120 def initialize(backend:, capabilities: nil) @backend = backend @capabilities = Array(capabilities || infer_capabilities(backend)) @evaluator = SemanticIRTemporalAccessEvaluator.new(backend) end |
Instance Method Details
#evaluate(access_node, temporal_inputs:, inputs:) ⇒ Object
139 140 141 142 143 144 145 |
# File 'lib/igniter_lang/temporal_access_runtime.rb', line 139 def evaluate(access_node, temporal_inputs:, inputs:) input_node = temporal_inputs.fetch(access_node.fetch("source_ref")) axis = Capabilities.axis_for(access_node, input_node) ensure_capabilities!(Capabilities.for_axis(axis), access_node) ensure_backend_contract!(axis) @evaluator.evaluate(access_node, temporal_inputs: temporal_inputs, inputs: inputs) end |
#load_check(contract:, requirements: {}) ⇒ Object
126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/igniter_lang/temporal_access_runtime.rb', line 126 def load_check(contract:, requirements: {}) nodes = contract.fetch("nodes", []) temporal_inputs = temporal_inputs_for(nodes) checks = nodes .select { |node| node.fetch("kind") == "temporal_access_node" } .map { |node| load_check_node(node, temporal_inputs, requirements) } { "kind" => "temporal_access_hook_load_check", "status" => checks.all? { |check| check.fetch("status") == "ok" } ? "ok" : "blocked", "checks" => checks } end |