newmen/versatile-diamond

View on GitHub
analyzer/lib/generators/code/algorithm/lateral_chunks_find_builder.rb

Summary

Maintainability
A
0 mins
Test Coverage
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