Class: Librarian::Manifest::Version

Inherits:
Object
  • Object
show all
Defined in:
lib/librarian/puppet/extension.rb,
lib/librarian/puppet/extension.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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Version

Returns a new instance of Version.



182
183
184
185
186
187
188
189
190
191
192
193
# File 'lib/librarian/puppet/extension.rb', line 182

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

#prereleaseObject (readonly)

Returns the value of attribute prerelease.



180
181
182
# File 'lib/librarian/puppet/extension.rb', line 180

def prerelease
  @prerelease
end

Class Method Details

.parse_semver(version_string) ⇒ Object



168
169
170
171
172
173
174
175
176
177
178
# File 'lib/librarian/puppet/extension.rb', line 168

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



195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
# File 'lib/librarian/puppet/extension.rb', line 195

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

#to_sObject



213
214
215
# File 'lib/librarian/puppet/extension.rb', line 213

def to_s
  @full_version
end