class ChefUtils::VersionString

String-like object for version strings.

@since 13.2 @api internal

Attributes

parsed_version[R]

Parsed version object for the string. @return [Gem::Version]

Public Class Methods

new(val) click to toggle source

Create a new VersionString from an input String.

@param val [String] Version string to parse.

Calls superclass method
# File lib/chef-utils/version_string.rb, line 30
def initialize(val)
  val ||= ""
  super(val)
  begin
    @parsed_version = ::Gem::Version.create(self)
  rescue ArgumentError
    @parsed_version = nil
  end
end

Public Instance Methods

!=(other) click to toggle source

Compat wrapper for != based on <=>.

@param other [Object] @return [Boolean]

# File lib/chef-utils/version_string.rb, line 93
def !=(other)
  (self <=> other) != 0
end
*(other) click to toggle source

Compat wrapper for * to behave like a normal String.

@param other [Integer] @return [String]

# File lib/chef-utils/version_string.rb, line 54
def *(other)
  to_s * other
end
+(other) click to toggle source

Compat wrapper for + to behave like a normal String.

@param other [String] @return [String]

# File lib/chef-utils/version_string.rb, line 46
def +(other)
  to_s + other
end
<(other) click to toggle source

Compat wrapper for < based on <=>.

@param other [Object] @return [Boolean]

# File lib/chef-utils/version_string.rb, line 101
def <(other)
  (self <=> other) < 0
end
<=(other) click to toggle source

Compat wrapper for <= based on <=>.

@param other [Object] @return [Boolean]

# File lib/chef-utils/version_string.rb, line 109
def <=(other)
  (self <=> other) < 1
end
<=>(other) click to toggle source

Compare a VersionString to an object. If compared to another VersionString then sort like ‘Gem::Version`, otherwise try to treat the other object as a version but fall back to normal string comparison.

@param other [Object] @return [Integer]

Calls superclass method
# File lib/chef-utils/version_string.rb, line 66
def <=>(other)
  other_ver = case other
              when VersionString
                other.parsed_version
              else
                begin
                  Gem::Version.create(other.to_s)
                rescue ArgumentError
                  # Comparing to a string that isn't a version.
                  return super
                end
              end
  parsed_version <=> other_ver
end
==(other) click to toggle source

Compat wrapper for == based on <=>.

@param other [Object] @return [Boolean]

# File lib/chef-utils/version_string.rb, line 85
def ==(other)
  (self <=> other) == 0
end
=~(other) click to toggle source

Matching operator to support checking against a requirement string.

@param other [Regexp, String] @return [Boolean] @example Match against a Regexp

ChefUtils::VersionString.new('1.0.0') =~ /^1/

@example Match against a requirement

ChefUtils::VersionString.new('1.0.0') =~ '~> 1.0'
Calls superclass method
# File lib/chef-utils/version_string.rb, line 139
def =~(other)
  case other
  when Regexp
    super
  else
    begin
      Gem::Requirement.create(other) =~ parsed_version
    rescue ArgumentError
      # one side of the comparison wasn't parsable
      super
    end
  end
end
>(other) click to toggle source

Compat wrapper for > based on <=>.

@param other [Object] @return [Boolean]

# File lib/chef-utils/version_string.rb, line 117
def >(other)
  (self <=> other) > 0
end
>=(other) click to toggle source

Compat wrapper for >= based on <=>.

@param other [Object] @return [Boolean]

# File lib/chef-utils/version_string.rb, line 125
def >=(other)
  (self <=> other) > -1
end
satisfies?(*constraints) click to toggle source

Back-compat API for chef-sugar. The other APIs are preferable.

@api private

# File lib/chef-utils/version_string.rb, line 156
def satisfies?(*constraints)
  Gem::Requirement.new(*constraints).satisfied_by?(@parsed_version)
end