class Dependabot::FileParsers::Base::DependencySet
def +(other)
def +(other) raise ArgumentError, "must be a DependencySet" unless other.is_a?(DependencySet) other_names = other.dependencies.map(&:name) other_names.each do |name| all_versions = other.all_versions_for_name(name) all_versions.each { |dep| self << dep } end self end
def <<(dep)
def <<(dep) T.must(@dependencies[key_for_dependency(dep)]) << dep self end
def all_versions_for_name(name)
def all_versions_for_name(name) key = key_for_name(name) @dependencies.key?(key) ? T.must(@dependencies[key]).all_versions : [] end
def case_sensitive?
def case_sensitive? @case_sensitive end
def dependencies
def dependencies @dependencies.values.filter_map(&:combined) end
def dependency_for_name(name)
def dependency_for_name(name) key = key_for_name(name) @dependencies.key?(key) ? T.must(@dependencies[key]).combined : nil end
def initialize(dependencies = [], case_sensitive: false)
def initialize(dependencies = [], case_sensitive: false) @case_sensitive = case_sensitive @dependencies = T.let( Hash.new { |hsh, key| hsh[key] = DependencySlot.new }, T::Hash[String, DependencySlot] ) dependencies.each { |dep| self << dep } end
def key_for_dependency(dep)
def key_for_dependency(dep) key_for_name(dep.name) end
def key_for_name(name)
def key_for_name(name) case_sensitive? ? name : name.downcase end