class Dependabot::Version
def self.correct?(version)
def self.correct?(version) return false if version.nil? version.to_s.match?(ANCHORED_VERSION_PATTERN) end
def self.new(version)
def self.new(version) T.cast(super, Dependabot::Version) end
def ignored_major_versions
def ignored_major_versions version_parts = to_semver.split(".") lower_parts = [version_parts[0].to_i + 1] + [lowest_prerelease_suffix] lower_bound = ">= #{lower_parts.join('.')}" [lower_bound] end
def ignored_minor_versions
def ignored_minor_versions parts = to_semver.split(".") version_parts = parts.fill("0", parts.length...2) lower_parts = version_parts.first(1) + [version_parts[1].to_i + 1] + [lowest_prerelease_suffix] upper_parts = version_parts.first(0) + [version_parts[0].to_i + 1] lower_bound = ">= #{lower_parts.join('.')}" upper_bound = "< #{upper_parts.join('.')}" ["#{lower_bound}, #{upper_bound}"] end
def ignored_patch_versions
def ignored_patch_versions parts = to_semver.split(".") version_parts = parts.fill("0", parts.length...2) upper_parts = version_parts.first(1) + [version_parts[1].to_i + 1] lower_bound = "> #{to_semver}" upper_bound = "< #{upper_parts.join('.')}" ["#{lower_bound}, #{upper_bound}"] end
def initialize(version)
def initialize(version) @original_version = T.let(version.to_s, String) super end
def lowest_prerelease_suffix
def lowest_prerelease_suffix "a" end
def semver_parts
def semver_parts # Extracts only the numeric major.minor.patch part of the version, ensuring it starts with a number match = to_semver.match(/^\d+(?:\.\d+)?(?:\.\d+)?(?=[^\d]|$)/) return nil unless match first_match = match[0] return nil unless first_match major, minor, patch = first_match.split(".").map(&:to_i) [major || 0, minor || 0, patch || 0] end
def to_semver
def to_semver @original_version end