Sha256: 6cde58a6c43cdd971727b6df06592ffde8492ef95588a3c62902fbf3fc40e630

Contents?: true

Size: 1.02 KB

Versions: 65

Compression:

Stored size: 1.02 KB

Contents

require 'r10k/errors/formatting'

module R10K
  module Action
    # Implement the Visitor pattern via pseudo double dispatch.
    #
    # Visitor classes must implement #visit_type methods for each type that may
    # be visited. If the visitor should descend into child objects the #visit_
    # method should yield to the passed block.
    #
    # Visitor classes must implement #logger so that error messages can be logged.
    #
    # @api private
    module Visitor

      # Dispatch to the type specific visitor method
      #
      # @param type [Symbol] The object type to dispatch for
      # @param other [Object] The actual object to pass to the visitor method
      # @param block [Proc] The block that the called visitor method may yield
      #   to in case recursion is desired.
      # @return [void]
      def visit(type, other, &block)
        send("visit_#{type}", other, &block)
      rescue => e
        logger.error R10K::Errors::Formatting.format_exception(e, @trace)
        @visit_ok = false
      end
    end
  end
end

Version data entries

65 entries across 65 versions & 1 rubygems

Version Path
r10k-3.12.0 lib/r10k/action/visitor.rb
r10k-3.11.0 lib/r10k/action/visitor.rb
r10k-3.10.0 lib/r10k/action/visitor.rb
r10k-3.9.3 lib/r10k/action/visitor.rb
r10k-3.9.2 lib/r10k/action/visitor.rb
r10k-3.9.1 lib/r10k/action/visitor.rb
r10k-3.9.0 lib/r10k/action/visitor.rb
r10k-3.8.0 lib/r10k/action/visitor.rb
r10k-3.7.0 lib/r10k/action/visitor.rb
r10k-3.6.0 lib/r10k/action/visitor.rb
r10k-2.6.9 lib/r10k/action/visitor.rb
r10k-3.5.2 lib/r10k/action/visitor.rb
r10k-3.5.1 lib/r10k/action/visitor.rb
r10k-3.5.0 lib/r10k/action/visitor.rb
r10k-3.4.1 lib/r10k/action/visitor.rb
r10k-2.6.8 lib/r10k/action/visitor.rb
r10k-3.4.0 lib/r10k/action/visitor.rb
r10k-3.3.3 lib/r10k/action/visitor.rb
r10k-3.2.3 lib/r10k/action/visitor.rb
r10k-2.6.7 lib/r10k/action/visitor.rb