class Solve::Graph

def ==(other)

Returns:
  • (Boolean) -

Parameters:
  • other (Object) --
def ==(other)
  return false unless other.is_a?(Graph)
  return false unless artifacts.size == other.artifacts.size
  self_artifacts = artifacts
  other_artifacts = other.artifacts
  self_dependencies = self_artifacts.inject([]) do |list, artifact|
    list << artifact.dependencies
  end.flatten
  other_dependencies = other_artifacts.inject([]) do |list, artifact|
    list << artifact.dependencies
  end.flatten
  self_dependencies.size == other_dependencies.size &&
    self_artifacts.all? { |artifact| other_artifacts.include?(artifact) } &&
    self_dependencies.all? { |dependency| other_dependencies.include?(dependency) }
end

def artifact(name, version)

Parameters:
  • name (String) --
def artifact(name, version)
  unless artifact?(name, version)
    artifact = Artifact.new(self, name, version)
    @artifacts["#{name}-#{version}"] = artifact
    @artifacts_by_name[name] << artifact
  end
  @artifacts["#{name}-#{version}"]
end

def artifact?(name, version)

Returns:
  • (Boolean) -

Parameters:
  • version (Semverse::Version, #to_s) --
  • name (String) --
def artifact?(name, version)
  !find(name, version).nil?
end

def artifacts

Returns:
  • (Array) -
def artifacts
  @artifacts.values
end

def find(name, version)

def find(name, version)
  @artifacts["#{name}-#{version}"]
end

def initialize

def initialize
  @artifacts = {}
  @artifacts_by_name = Hash.new { |hash, key| hash[key] = [] }
end

def versions(name, constraint = Semverse::DEFAULT_CONSTRAINT)

Returns:
  • (Array) -

Parameters:
  • name (String) --
def versions(name, constraint = Semverse::DEFAULT_CONSTRAINT)
  constraint = Semverse::Constraint.coerce(constraint)
  if constraint == Semverse::DEFAULT_CONSTRAINT
    @artifacts_by_name[name]
  else
    @artifacts_by_name[name].select do |artifact|
      constraint.satisfies?(artifact.version)
    end
  end
end