module Richcss::VersionKit::Version::Helper
Identifies the possible next versions from a given one.
Public Class Methods
bump(version, index)
click to toggle source
Bumps the component at the given index @param [Version, to_s] version @param [#to_i] component @return [Version]
# File lib/richcss/vendor/version_kit/lib/version_kit/version/helper.rb, line 11 def self.bump(version, index) index = index.to_i unless (0..2).include?(index) raise ArgumentError, "Unsupported index `#{index}`" end version = coherce_version(version) number_components = version.number_component[0..index] number_components[index] = number_components[index].succ Version.new([number_components]) end
coherce_version(version)
click to toggle source
@param [Version, to_s] version @return [Version]
# File lib/richcss/vendor/version_kit/lib/version_kit/version/helper.rb, line 108 def self.coherce_version(version) if version.is_a?(Version) version else Version.new(version) end end
next_major(version)
click to toggle source
@param [Version, to_s] version @return [Version]
# File lib/richcss/vendor/version_kit/lib/version_kit/version/helper.rb, line 26 def self.next_major(version) bump(version, 0) end
next_minor(version)
click to toggle source
@param [Version, to_s] version @return [Version]
# File lib/richcss/vendor/version_kit/lib/version_kit/version/helper.rb, line 33 def self.next_minor(version) bump(version, 1) end
next_patch(version)
click to toggle source
@param [Version, to_s] version @return [Version]
# File lib/richcss/vendor/version_kit/lib/version_kit/version/helper.rb, line 40 def self.next_patch(version) bump(version, 2) end
next_pre_release(version)
click to toggle source
@param [Version, to_s] version @return [Version] @return [Nil]
# File lib/richcss/vendor/version_kit/lib/version_kit/version/helper.rb, line 48 def self.next_pre_release(version) version = coherce_version(version) return nil unless version.pre_release_component pre_release_component = [] version.pre_release_component.each do |element| element = element.succ if element.is_a?(Fixnum) pre_release_component << element end if version.pre_release_component != pre_release_component Version.new([version.number_component, pre_release_component]) end end
next_versions(version)
click to toggle source
@param [Version, to_s] version @return [Array<Version>] All the possible versions the given one
might evolve in.
# File lib/richcss/vendor/version_kit/lib/version_kit/version/helper.rb, line 65 def self.next_versions(version) version = coherce_version(version) [ next_major(version), next_minor(version), next_patch(version), next_pre_release(version) ].compact end
optimistic_requirement(version)
click to toggle source
@return [String] The optimistic requirement (‘~>`) which, according to
SemVer, preserves backwards compatibility.
# File lib/richcss/vendor/version_kit/lib/version_kit/version/helper.rb, line 96 def self.optimistic_requirement(version) version = coherce_version(version) if version.major_version == 0 "~> #{version.number_component[0..2].join('.')}" else "~> #{version.number_component[0..1].join('.')}" end end
release_version(version)
click to toggle source
@return [Version] The version stripped of any pre-release or build
metadata.
# File lib/richcss/vendor/version_kit/lib/version_kit/version/helper.rb, line 88 def self.release_version(version) version = coherce_version(version) Version.new([version.number_component]) end
valid_next_version?(version, candidate)
click to toggle source
@param [Version, to_s] version @param [Version, to_s] candidate @return [Bool]
# File lib/richcss/vendor/version_kit/lib/version_kit/version/helper.rb, line 79 def self.valid_next_version?(version, candidate) version = coherce_version(version) candidate = coherce_version(candidate) next_versions(version).include?(candidate) end