Sha256: a97df7e498a94c3ee65db18ad4447478c7369de59d17ac5f2d32214caf6c2749

Contents?: true

Size: 1.59 KB

Versions: 17

Compression:

Stored size: 1.59 KB

Contents

# frozen_string_literal: true

require_relative 'action'
module Gem::Molinillo
  class DependencyGraph
    # @!visibility private
    # (see DependencyGraph#add_vertex)
    class AddVertex < Action # :nodoc:
      # @!group Action

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

      # (see Action#up)
      def up(graph)
        if existing = graph.vertices[name]
          @existing_payload = existing.payload
          @existing_root = existing.root
        end
        vertex = existing || Vertex.new(name, payload)
        graph.vertices[vertex.name] = vertex
        vertex.payload ||= payload
        vertex.root ||= root
        vertex
      end

      # (see Action#down)
      def down(graph)
        if defined?(@existing_payload)
          vertex = graph.vertices[name]
          vertex.payload = @existing_payload
          vertex.root = @existing_root
        else
          graph.vertices.delete(name)
        end
      end

      # @!group AddVertex

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

      # @return [Object] the payload for the vertex
      attr_reader :payload

      # @return [Boolean] whether the vertex is root or not
      attr_reader :root

      # Initialize an action to add a vertex to a dependency graph
      # @param [String] name the name of the vertex
      # @param [Object] payload the payload for the vertex
      # @param [Boolean] root whether the vertex is root or not
      def initialize(name, payload, root)
        @name = name
        @payload = payload
        @root = root
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
rubygems-update-3.5.23 lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
rubygems-update-3.5.22 lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
rubygems-update-3.5.21 lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
rubygems-update-3.5.20 lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
rubygems-update-3.5.19 lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
rubygems-update-3.5.18 lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
rubygems-update-3.5.17 lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
rubygems-update-3.5.16 lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
rubygems-update-3.5.15 lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
rubygems-update-3.5.14 lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
rubygems-update-3.5.13 lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
rubygems-update-3.5.12 lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
rubygems-update-3.5.10 lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
rubygems-update-3.5.9 lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
rubygems-update-3.5.8 lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
rubygems-update-3.5.7 lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
rubygems-update-3.5.6 lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb