class ChefUtils::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-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
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
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
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
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
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
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-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
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
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'
# 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
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
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
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