<=>(other)
click to toggle source
def <=>(other)
pairs = array.zip(other.array)
pairs.map! { |a, b| [ a.to_i, b.to_i ] }
a, b = pairs.transpose
a <=> b
end
==(other)
click to toggle source
def ==(other)
(self <=> other).zero?
end
[](level)
click to toggle source
def [](level)
array[level_of(level)]
end
[]=(level, value)
click to toggle source
def []=(level, value)
level = level_of(level)
value = value.to_i
value >= 0 or raise ArgumentError,
"version numbers can't contain negative numbers like #{value}"
a = array
a[level] = value
a.map!(&:to_i)
@version.replace a * .
end
array()
click to toggle source
def array
@version.split(.).map(&:to_i)
end
bump(level = array.size - 1)
click to toggle source
def bump(level = array.size - 1)
level = level_of(level)
self[level] += 1
for l in level.succ..3
self[l] &&= 0
end
self
end
initialize_copy(source)
click to toggle source
Calls superclass method
def initialize_copy(source)
super
@version = source.instance_variable_get(:@version).dup
end
level_of(specifier)
click to toggle source
def level_of(specifier)
if specifier.respond_to?(:to_sym)
LEVELS.fetch(specifier)
else
specifier
end
end
pred!()
click to toggle source
def pred!
self[-1] -= 1
self
end
succ!()
click to toggle source
def succ!
self[-1] += 1
self
end
to_s()
click to toggle source