Class: Librarian::Manifest::Version
- Inherits:
-
Object
- Object
- Librarian::Manifest::Version
- Includes:
- Comparable
- Defined in:
- lib/librarian/manifest/version.rb
Constant Summary collapse
- @@SEMANTIC_VERSION_PATTERN =
/^([0-9]+\.[0-9]+(?:\.[0-9]+)?)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?$/
Instance Attribute Summary collapse
-
#prerelease ⇒ Object
readonly
Returns the value of attribute prerelease.
Class Method Summary collapse
Instance Method Summary collapse
- #<=>(other) ⇒ Object
-
#initialize(*args) ⇒ Version
constructor
A new instance of Version.
- #inspect ⇒ Object
- #to_gem_version ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize(*args) ⇒ Version
Returns a new instance of Version.
11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/librarian/manifest/version.rb', line 11 def initialize(*args) args = initialize_normalize_args(args) semver = Version.parse_semver(*args) if semver self.backing = Gem::Version.new(semver[:version]) @prerelease = semver[:prerelease] @full_version = semver[:full_version] else self.backing = Gem::Version.new(*args) @full_version = to_gem_version.to_s end end |
Instance Attribute Details
#prerelease ⇒ Object (readonly)
Returns the value of attribute prerelease.
9 10 11 |
# File 'lib/librarian/manifest/version.rb', line 9 def prerelease @prerelease end |
Class Method Details
.parse_semver(version_string) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/librarian/manifest/version.rb', line 54 def self.parse_semver(version_string) parsed = @@SEMANTIC_VERSION_PATTERN.match(version_string.strip) if parsed { :full_version => parsed[0], :version => parsed[1], :prerelease => (PreReleaseVersion.new(parsed[2]) if parsed[2]), :build => parsed[3] } end end |
Instance Method Details
#<=>(other) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/librarian/manifest/version.rb', line 28 def <=>(other) cmp = to_gem_version <=> other.to_gem_version # Should compare pre-release versions? if cmp == 0 and not (prerelease.nil? and other.prerelease.nil?) case # Versions without prerelease take precedence when (prerelease.nil? and not other.prerelease.nil?) 1 when (not prerelease.nil? and other.prerelease.nil?) -1 else prerelease <=> other.prerelease end else cmp end end |
#inspect ⇒ Object
50 51 52 |
# File 'lib/librarian/manifest/version.rb', line 50 def inspect "#<#{self.class} #{to_s}>" end |
#to_gem_version ⇒ Object
24 25 26 |
# File 'lib/librarian/manifest/version.rb', line 24 def to_gem_version backing end |
#to_s ⇒ Object
46 47 48 |
# File 'lib/librarian/manifest/version.rb', line 46 def to_s @full_version end |