class Capsium::Package::Version
A semantic version (MAJOR.MINOR.PATCH[-prerelease][+build]) with semver precedence ordering. Build metadata is parsed but ignored for precedence, per semver.org item 10.
Constants
- PATTERN
Attributes
major
[R]
Integer
minor
[R]
Integer
patch
[R]
Integer
prerelease
[R]
String?
Public Class Methods
(Integer major, Integer minor, Integer patch, ?String? prerelease) → void
Source
# File lib/capsium/package/version.rb, line 22 def initialize(major, minor, patch, prerelease = nil) @major = major @minor = minor @patch = patch @prerelease = prerelease end
(String string) → Version
Source
# File lib/capsium/package/version.rb, line 15 def self.parse(string) match = PATTERN.match(string.to_s.strip) raise Error, "Invalid semver version: #{string.inspect}" unless match new(match[1].to_i, match[2].to_i, match[3].to_i, match[4]) end
Public Instance Methods
(Version other) → Integer
Source
# File lib/capsium/package/version.rb, line 29 def <=>(other) core = [major, minor, patch] <=> [other.major, other.minor, other.patch] return core unless core.zero? compare_prerelease(other) end
() → String
Source
# File lib/capsium/package/version.rb, line 36 def to_s "#{major}.#{minor}.#{patch}#{"-#{prerelease}" if prerelease}" end