class Dependabot::Config::IgnoreCondition

Filters versions that should not be considered for dependency updates

def correct_version_for(dependency)

def correct_version_for(dependency)
  version = dependency.version
  return if version.nil? || version.empty?
  version_class = version_class_for(dependency.package_manager)
  return unless version_class.correct?(version)
  version_class.new(version)
end

def ignored_versions(dependency, security_updates_only)

def ignored_versions(dependency, security_updates_only)
  return versions if security_updates_only
  return [ALL_VERSIONS] if versions.empty? && transformed_update_types.empty?
  versions_by_type(dependency) + versions
end

def initialize(dependency_name:, versions: nil, update_types: nil)

def initialize(dependency_name:, versions: nil, update_types: nil)
  @dependency_name = T.let(dependency_name, String)
  @versions = T.let(versions || [], T::Array[String])
  @update_types = T.let(update_types || [], T::Array[String])
end

def transformed_update_types

def transformed_update_types
  update_types.map(&:downcase).filter_map(&:strip)
end

def version_class_for(package_manager)

def version_class_for(package_manager)
  Utils.version_class_for_package_manager(package_manager)
rescue StandardError
  Version
end

def versions_by_type(dependency)

def versions_by_type(dependency)
  version = correct_version_for(dependency)
  return [] unless version
  transformed_update_types.flat_map do |t|
    case t
    when PATCH_VERSION_TYPE
      version.ignored_patch_versions
    when MINOR_VERSION_TYPE
      version.ignored_minor_versions
    when MAJOR_VERSION_TYPE
      version.ignored_major_versions
    else
      []
    end
  end.compact
end