Sha256: bb45e0d89bcdc663027ff5f93d5d5021a017a9252c56a50de9923347053d2e65

Contents?: true

Size: 1.42 KB

Versions: 15

Compression:

Stored size: 1.42 KB

Contents

# frozen_string_literal: true
require 'bundler/vendor/molinillo/lib/molinillo/dependency_graph/action'
module Bundler::Molinillo
  class DependencyGraph
    # @!visibility private
    # @see DependencyGraph#detach_vertex_named
    class DetachVertexNamed < Action
      # @!group Action

      # (see Action#name)
      def self.name
        :add_vertex
      end

      # (see Action#up)
      def up(graph)
        return unless @vertex = graph.vertices.delete(name)
        @vertex.outgoing_edges.each do |e|
          v = e.destination
          v.incoming_edges.delete(e)
          graph.detach_vertex_named(v.name) unless v.root? || v.predecessors.any?
        end
        @vertex.incoming_edges.each do |e|
          v = e.origin
          v.outgoing_edges.delete(e)
        end
      end

      # (see Action#down)
      def down(graph)
        return unless @vertex
        graph.vertices[@vertex.name] = @vertex
        @vertex.outgoing_edges.each do |e|
          e.destination.incoming_edges << e
        end
        @vertex.incoming_edges.each do |e|
          e.origin.outgoing_edges << e
        end
      end

      # @!group DetachVertexNamed

      # @return [String] the name of the vertex to detach
      attr_reader :name

      # Initialize an action to detach a vertex from a dependency graph
      # @param [String] name the name of the vertex to detach
      def initialize(name)
        @name = name
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 2 rubygems

Version Path
bundler-1.13.7 lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
rubygems-update-2.6.8 bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
bundler-1.13.6 lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
bundler-1.13.5 lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
bundler-1.13.4 lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
bundler-1.13.3 lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
bundler-1.13.2 lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
rubygems-update-2.6.7 bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
bundler-1.13.1 lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
bundler-1.13.0 lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
bundler-1.13.0.rc.2 lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
bundler-1.13.0.rc.1 lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
rubygems-update-2.6.6 bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
rubygems-update-2.6.5 bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
bundler-1.13.0.pre.1 lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb