Module: Richcss::VersionKit::Version::Helper
- Defined in:
- lib/richcss/vendor/version_kit/lib/version_kit/version/helper.rb
Overview
Identifies the possible next versions from a given one.
Class Method Summary collapse
-
.bump(version, index) ⇒ Version
Bumps the component at the given index.
- .coherce_version(version) ⇒ Version
- .next_major(version) ⇒ Version
- .next_minor(version) ⇒ Version
- .next_patch(version) ⇒ Version
- .next_pre_release(version) ⇒ Version, Nil
-
.next_versions(version) ⇒ Array<Version>
All the possible versions the given one might evolve in.
-
.optimistic_requirement(version) ⇒ String
The optimistic requirement (‘~>`) which, according to SemVer, preserves backwards compatibility.
-
.release_version(version) ⇒ Version
The version stripped of any pre-release or build metadata.
- .valid_next_version?(version, candidate) ⇒ Bool
Class Method Details
.bump(version, index) ⇒ Version
Bumps the component at the given index
11 12 13 14 15 16 17 18 19 20 21 |
# 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) ⇒ Version
108 109 110 111 112 113 114 |
# 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) ⇒ Version
26 27 28 |
# 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) ⇒ Version
33 34 35 |
# 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) ⇒ Version
40 41 42 |
# 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) ⇒ Version, Nil
48 49 50 51 52 53 54 55 56 57 58 59 |
# 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) ⇒ Array<Version>
Returns All the possible versions the given one might evolve in.
65 66 67 68 69 70 71 72 73 |
# 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) ⇒ String
Returns The optimistic requirement (‘~>`) which, according to SemVer, preserves backwards compatibility.
96 97 98 99 100 101 102 103 |
# 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) ⇒ Version
Returns The version stripped of any pre-release or build metadata.
88 89 90 91 |
# 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) ⇒ Bool
79 80 81 82 83 |
# 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 |