Class: SpmVersionUpdates::Semver
- Inherits:
-
Object
- Object
- SpmVersionUpdates::Semver
- Includes:
- Comparable
- Defined in:
- lib/spm_version_updates/semver.rb
Overview
SemVer value object used by both the GitHub Action and legacy Danger plugin.
Class Method Summary collapse
Instance Method Summary collapse
- #<=>(other) ⇒ Object
-
#initialize(value) ⇒ Semver
constructor
A new instance of Semver.
- #major ⇒ Object
- #minor ⇒ Object
- #patch ⇒ Object
- #pre ⇒ Object (also: #pre_release)
- #to_s ⇒ Object
Constructor Details
#initialize(value) ⇒ Semver
Returns a new instance of Semver.
18 19 20 21 22 |
# File 'lib/spm_version_updates/semver.rb', line 18 def initialize(value) @version = Semverify::Semver.new(self.class.normalize(value)) rescue Semverify::Error => error raise(ArgumentError, error.) end |
Class Method Details
.normalize(value) ⇒ Object
12 13 14 15 16 |
# File 'lib/spm_version_updates/semver.rb', line 12 def self.normalize(value) value.to_s .sub(/\Av(?=\d)/, "") .sub(/\A(\d+)\.(\d+)(?=\z|[-+])/, '\1.\2.0') end |
Instance Method Details
#<=>(other) ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/spm_version_updates/semver.rb', line 24 def <=>(other) semver_class = self.class other_version = other.kind_of?(semver_class) ? other.version : semver_class.new(other).version version <=> other_version rescue ArgumentError nil end |
#major ⇒ Object
32 33 34 |
# File 'lib/spm_version_updates/semver.rb', line 32 def major version.major.to_i end |
#minor ⇒ Object
36 37 38 |
# File 'lib/spm_version_updates/semver.rb', line 36 def minor version.minor.to_i end |
#patch ⇒ Object
40 41 42 |
# File 'lib/spm_version_updates/semver.rb', line 40 def patch version.patch.to_i end |
#pre ⇒ Object Also known as: pre_release
44 45 46 |
# File 'lib/spm_version_updates/semver.rb', line 44 def pre version.pre_release.to_s.then { |value| value.empty? ? nil : value } end |
#to_s ⇒ Object
49 50 51 |
# File 'lib/spm_version_updates/semver.rb', line 49 def to_s version.to_s end |