Class: Librarian::Manifest::PreReleaseVersion
- Inherits:
-
Object
- Object
- Librarian::Manifest::PreReleaseVersion
- Includes:
- Comparable
- Defined in:
- lib/librarian/puppet/extension.rb
Instance Attribute Summary collapse
-
#components ⇒ Object
readonly
Returns the value of attribute components.
Class Method Summary collapse
-
.compare_components(this_id, other_id) ⇒ Object
Compares pre-release component ids using Semver 2.0.0 spec.
-
.parse(prerelease) ⇒ Object
Parses pre-release components ‘a.b.c` into an array “[a,b,c]` Converts numeric components into
Integer
.
Instance Method Summary collapse
- #<=>(other) ⇒ Object
-
#initialize(prerelease) ⇒ PreReleaseVersion
constructor
A new instance of PreReleaseVersion.
- #to_s ⇒ Object
Constructor Details
#initialize(prerelease) ⇒ PreReleaseVersion
Returns a new instance of PreReleaseVersion.
154 155 156 157 |
# File 'lib/librarian/puppet/extension.rb', line 154 def initialize(prerelease) @prerelease = prerelease @components = PreReleaseVersion.parse(prerelease) end |
Instance Attribute Details
#components ⇒ Object (readonly)
Returns the value of attribute components.
152 153 154 |
# File 'lib/librarian/puppet/extension.rb', line 152 def components @components end |
Class Method Details
.compare_components(this_id, other_id) ⇒ Object
Compares pre-release component ids using Semver 2.0.0 spec
126 127 128 129 130 131 132 133 134 135 |
# File 'lib/librarian/puppet/extension.rb', line 126 def self.compare_components(this_id,other_id) case # Strings have higher precedence than numbers when (this_id.is_a?(Integer) and other_id.is_a?(String)) -1 when (this_id.is_a?(String) and other_id.is_a?(Integer)) 1 else this_id <=> other_id end end |
.parse(prerelease) ⇒ Object
Parses pre-release components ‘a.b.c` into an array “[a,b,c]` Converts numeric components into Integer
139 140 141 142 143 144 145 146 147 148 |
# File 'lib/librarian/puppet/extension.rb', line 139 def self.parse(prerelease) if prerelease.nil? [] else prerelease.split('.').collect do |id| id = Integer(id) if /^[0-9]+$/ =~ id id end end end |
Instance Method Details
#<=>(other) ⇒ Object
163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 |
# File 'lib/librarian/puppet/extension.rb', line 163 def <=>(other) # null-fill zip array to prevent loss of components z = Array.new([components.length,other.components.length]) # Compare each component against the other comp = z.zip(components,other.components).collect do |ids| case # All components being equal, the version with more of them takes precedence when ids[1].nil? # Self has less elements, other wins -1 when ids[2].nil? # Other has less elements, self wins 1 else PreReleaseVersion.compare_components(ids[1],ids[2]) end end # Chose the first non-zero comparison or return 0 comp.delete_if {|c| c == 0}[0] || 0 end |
#to_s ⇒ Object
159 160 161 |
# File 'lib/librarian/puppet/extension.rb', line 159 def to_s @prerelease end |