Class: IgniterLang::TemporalAccessRuntime::SemanticIRTemporalAccessEvaluator

Inherits:
Object
  • Object
show all
Defined in:
lib/igniter_lang/temporal_access_runtime.rb

Instance Method Summary collapse

Constructor Details

#initialize(backend) ⇒ SemanticIRTemporalAccessEvaluator

Returns a new instance of SemanticIRTemporalAccessEvaluator.



228
229
230
# File 'lib/igniter_lang/temporal_access_runtime.rb', line 228

def initialize(backend)
  @backend = backend
end

Instance Method Details

#evaluate(access_node, temporal_inputs:, inputs:) ⇒ Object

Raises:

  • (ArgumentError)


232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
# File 'lib/igniter_lang/temporal_access_runtime.rb', line 232

def evaluate(access_node, temporal_inputs:, inputs:)
  raise ArgumentError, "expected temporal_access_node" unless access_node.fetch("kind") == "temporal_access_node"
  raise ArgumentError, "only point temporal access is supported" unless access_node.fetch("access") == "point"

  input_node = temporal_inputs.fetch(access_node.fetch("source_ref"))
  axis = normalized_axis(access_node, input_node)
  case axis
  when "valid_time"
    evaluate_valid_time(access_node, input_node, inputs)
  when "bitemporal"
    evaluate_bitemporal(access_node, input_node, inputs)
  else
    raise ArgumentError, "unsupported temporal axis: #{axis}"
  end
end