class Librarian::Manifest::Version

Attributes

prerelease[R]

Public Class Methods

new(*args) click to toggle source
# File lib/librarian/puppet/extension.rb, line 185
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
parse_semver(version_string) click to toggle source
# File lib/librarian/puppet/extension.rb, line 171
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

Public Instance Methods

<=>(other) click to toggle source
# File lib/librarian/puppet/extension.rb, line 198
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_s() click to toggle source
# File lib/librarian/puppet/extension.rb, line 216
def to_s
  @full_version
end