analyzer/lib/generators/code/algorithm/lateral_chunks_find_builder.rb
module VersatileDiamond
module Generators
module Code
module Algorithm
# Contain logic for building lateral chunks algorithm
# @abstract
class LateralChunksFindBuilder < FindAlgorithmBuilder
# @param [LateralChunksBackbone] backbone
# @param [TypicalReaction]
def initialize(backbone, reaction)
super(backbone)
@reaction = reaction
@_action_unit = nil
end
private
# @return [Units::Expressions::LateralExprsDictionary]
# @override
def make_dict
Units::Expressions::LateralExprsDictionary.new(@reaction)
end
# @param [Array] ordered_graph
# @return [Units::LateralContextProvider]
def make_context_provider(ordered_graph)
Units::LateralContextProvider.new(dict, nodes_graph, ordered_graph)
end
# @return [Units::ActionTargetUnit]
def action_unit
@_action_unit ||=
combine_context_factory([]).action_unit(backbone.action_nodes)
end
# Define by default
# @return [Boolean]
# @override
def define_each_entry_node?
false
end
# @return [Expressions::Core::Statement]
# @override
def complete_algorithm
action_unit.predefine! do
dict.checkpoint!
super
end
end
end
end
end
end
end