class Chef::VersionString
String-like object for version strings.
@since 13.2 @api internal
Attributes
Parsed version object for the string. @return [Gem::Version]
Public Class Methods
Create a new VersionString from an input String.
@param val [String] Version string to parse.
# File lib/chef/version_string.rb, line 29 def initialize(val) super @parsed_version = ::Gem::Version.create(self) end
Public Instance Methods
Compat wrapper for != based on <=>.
@param other [Object] @return [Boolean]
# File lib/chef/version_string.rb, line 87 def !=(other) (self <=> other) != 0 end
Compat wrapper for * to behave like a normal String.
@param other [Integer] @return [String]
# File lib/chef/version_string.rb, line 48 def *(other) to_s * other end
Compat wrapper for + to behave like a normal String.
@param other [String] @return [String]
# File lib/chef/version_string.rb, line 40 def +(other) to_s + other end
Compat wrapper for < based on <=>.
@param other [Object] @return [Boolean]
# File lib/chef/version_string.rb, line 95 def <(other) (self <=> other) < 0 end
Compat wrapper for <= based on <=>.
@param other [Object] @return [Boolean]
# File lib/chef/version_string.rb, line 103 def <=(other) (self <=> other) < 1 end
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]
# File lib/chef/version_string.rb, line 60 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
Compat wrapper for == based on <=>.
@param other [Object] @return [Boolean]
# File lib/chef/version_string.rb, line 79 def ==(other) (self <=> other) == 0 end
Matching operator to support checking against a requirement string.
@param other [Regexp, String] @return [Boolean] @example Match against a Regexp
Chef::VersionString.new('1.0.0') =~ /^1/
@example Match against a requirement
Chef::VersionString.new('1.0.0') =~ '~> 1.0'
# File lib/chef/version_string.rb, line 133 def =~(other) case other when Regexp super else Gem::Requirement.create(other) =~ parsed_version end end
Compat wrapper for > based on <=>.
@param other [Object] @return [Boolean]
# File lib/chef/version_string.rb, line 111 def >(other) (self <=> other) > 0 end
Compat wrapper for >= based on <=>.
@param other [Object] @return [Boolean]
# File lib/chef/version_string.rb, line 119 def >=(other) (self <=> other) > -1 end