Class: Factorix::Dependency::Edge

Inherits:
Data
  • Object
show all
Defined in:
lib/factorix/dependency/edge.rb,
lib/factorix/dependency/edge.rb

Overview

Represents a dependency edge in the dependency graph

Each edge represents a dependency relationship from one MOD (dependent) to another MOD (dependency). The edge type indicates the nature of the relationship (required, optional, incompatible, etc.).

Constant Summary collapse

REQUIRED =

Dependency types (from Factorix::Dependency::Entry)

Entry::REQUIRED
OPTIONAL =
Entry::OPTIONAL
HIDDEN_OPTIONAL =
Entry::HIDDEN_OPTIONAL
INCOMPATIBLE =
Entry::INCOMPATIBLE
LOAD_NEUTRAL =
Entry::LOAD_NEUTRAL

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(from_mod:, to_mod:, type:, version_requirement: nil) ⇒ Edge

Returns a new instance of Edge.

Parameters:

  • from_mod (Factorix::MOD)

    The dependent MOD

  • to_mod (Factorix::MOD)

    The dependency MOD

  • type (Symbol)

    The dependency type (:required, :optional, :hidden, :incompatible, :load_neutral)

  • version_requirement (MODVersionRequirement, nil) (defaults to: nil)

    Version requirement (optional)



38
# File 'lib/factorix/dependency/edge.rb', line 38

def initialize(from_mod:, to_mod:, type:, version_requirement: nil) = super

Instance Attribute Details

#from_modFactorix::MOD (readonly)

Returns MOD object (the dependent).

Returns:



13
14
15
# File 'lib/factorix/dependency/edge.rb', line 13

def from_mod
  @from_mod
end

#to_modFactorix::MOD (readonly)

Returns MOD object (the dependency).

Returns:



13
14
15
# File 'lib/factorix/dependency/edge.rb', line 13

def to_mod
  @to_mod
end

#typeSymbol (readonly)

Returns dependency type.

Returns:

  • (Symbol)

    dependency type



13
14
15
# File 'lib/factorix/dependency/edge.rb', line 13

def type
  @type
end

#version_requirementMODVersionRequirement? (readonly)

Returns version requirement.

Returns:



13
14
15
# File 'lib/factorix/dependency/edge.rb', line 13

def version_requirement
  @version_requirement
end

Instance Method Details

#hidden_optional?Boolean

Check if this is a hidden optional dependency

Returns:

  • (Boolean)


53
# File 'lib/factorix/dependency/edge.rb', line 53

def hidden_optional? = type == HIDDEN_OPTIONAL

#incompatible?Boolean

Check if this is an incompatibility relationship

Returns:

  • (Boolean)


58
# File 'lib/factorix/dependency/edge.rb', line 58

def incompatible? = type == INCOMPATIBLE

#inspectString

Detailed inspection string

Returns:

  • (String)


86
# File 'lib/factorix/dependency/edge.rb', line 86

def inspect = "#<#{self.class.name} #{self}>"

#load_neutral?Boolean

Check if this is a load-neutral dependency

Returns:

  • (Boolean)


63
# File 'lib/factorix/dependency/edge.rb', line 63

def load_neutral? = type == LOAD_NEUTRAL

#optional?Boolean

Check if this is an optional dependency

Returns:

  • (Boolean)


48
# File 'lib/factorix/dependency/edge.rb', line 48

def optional? = type == OPTIONAL || type == HIDDEN_OPTIONAL

#required?Boolean

Check if this is a required dependency

Returns:

  • (Boolean)


43
# File 'lib/factorix/dependency/edge.rb', line 43

def required? = type == REQUIRED

#satisfied_by?(version) ⇒ Boolean

Check if the given version satisfies this edge’s version requirement

Parameters:

Returns:

  • (Boolean)

    true if satisfied or no requirement exists



69
70
71
72
73
# File 'lib/factorix/dependency/edge.rb', line 69

def satisfied_by?(version)
  return true unless version_requirement

  version_requirement.satisfied_by?(version)
end

#to_sString

String representation of the edge

Returns:

  • (String)


78
79
80
81
# File 'lib/factorix/dependency/edge.rb', line 78

def to_s
  requirement_str = version_requirement ? " #{version_requirement}" : ""
  "#{from_mod} --[#{type}#{requirement_str}]--> #{to_mod}"
end