class Librarian::Manifest::Version

Attributes

backing[RW]
prerelease[R]

Public Class Methods

new(*args) click to toggle source
# 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
parse_semver(version_string) click to toggle source
# 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

Public Instance Methods

<=>(other) click to toggle source
# 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() click to toggle source
# File lib/librarian/manifest/version.rb, line 50
def inspect
  "#<#{self.class} #{to_s}>"
end
to_gem_version() click to toggle source
# File lib/librarian/manifest/version.rb, line 24
def to_gem_version
  backing
end
to_s() click to toggle source
# File lib/librarian/manifest/version.rb, line 46
def to_s
  @full_version
end

Private Instance Methods

initialize_normalize_args(args) click to toggle source
# File lib/librarian/manifest/version.rb, line 68
def initialize_normalize_args(args)
  args.map do |arg|
    arg = [arg] if self.class === arg
    arg
  end
end