class Mixlib::Versioning::Format::Rubygems

Handles version strings based on {guides.rubygems.org/patterns/}

SUPPORTED FORMATS


“`text MAJOR.MINOR.PATCH.PRERELEASE MAJOR.MINOR.PATCH.PRERELEASE-ITERATION “`

EXAMPLES


“`text 10.1.1 10.1.1.alpha.1 10.1.1.beta.1 10.1.1.rc.0 10.16.2 “`

@author Seth Chisamore (<schisamo@chef.io>) @author Christopher Maier (<cm@chef.io>)

Constants

RUBYGEMS_REGEX

Public Instance Methods

parse(version_string) click to toggle source

@see Format#parse

# File lib/mixlib/versioning/format/rubygems.rb, line 48
def parse(version_string)
  match = version_string.match(RUBYGEMS_REGEX) rescue nil

  unless match
    raise Mixlib::Versioning::ParseError, "'#{version_string}' is not a valid #{self.class} version string!"
  end

  @major, @minor, @patch, @prerelease, @iteration = match[1..5]
  @major, @minor, @patch = [@major, @minor, @patch].map(&:to_i)

  # Do not convert @prerelease or @iteration to an integer;
  # sorting logic will handle the conversion.
  @iteration = if @iteration.nil? || @iteration.empty?
                 nil
               else
                 @iteration.to_i
               end
  @prerelease = nil if @prerelease.nil? || @prerelease.empty?
end