class Chef::Version
Attributes
major[R]
minor[R]
patch[R]
Public Class Methods
new(str = "")
click to toggle source
# File lib/chef/version_class.rb, line 23 def initialize(str = "") parse(str) end
Public Instance Methods
<=>(other)
click to toggle source
# File lib/chef/version_class.rb, line 35 def <=>(other) %i{major minor patch}.each do |method| version = send(method) begin ans = (version <=> other.send(method)) rescue NoMethodError # if the other thing isn't a version object, return nil return nil end return ans unless ans == 0 end 0 end
eql?(other)
click to toggle source
For hash
# File lib/chef/version_class.rb, line 55 def eql?(other) other.is_a?(Version) && self == other end
hash()
click to toggle source
# File lib/chef/version_class.rb, line 48 def hash # Didn't put any thought or research into this, probably can be # done better to_s.hash end
inspect()
click to toggle source
# File lib/chef/version_class.rb, line 27 def inspect "#{@major}.#{@minor}.#{@patch}" end
to_s()
click to toggle source
# File lib/chef/version_class.rb, line 31 def to_s "#{@major}.#{@minor}.#{@patch}" end
Protected Instance Methods
parse(str = "")
click to toggle source
# File lib/chef/version_class.rb, line 61 def parse(str = "") @major, @minor, @patch = case str.to_s when /^(\d+)\.(\d+)\.(\d+)$/ [ $1.to_i, $2.to_i, $3.to_i ] when /^(\d+)\.(\d+)$/ [ $1.to_i, $2.to_i, 0 ] else msg = "'#{str}' does not match 'x.y.z' or 'x.y'" raise Chef::Exceptions::InvalidCookbookVersion.new( msg ) end end