class Tins::StringVersion::Version
def <=>(other)
def <=>(other) pairs = array.zip(other.array) pairs.map! { |a, b| [ a.nil? ? 0 : a, b.nil? ? 0 : b ] } a, b = pairs.transpose a <=> b end
def ==(other)
def ==(other) (self <=> other).zero? end
def [](index)
def [](index) array[index] end
def []=(index, value)
def []=(index, value) value = value.to_i value >= 0 or raise ArgumentError, "version numbers can't contain negative numbers like #{value}" a = array @array = nil a[index] = value a.map! { |x| x.nil? ? 0 : x } @version.replace a * '.' end
def array
def array @version.split('.').map(&:to_i) end
def build
def build self[2] end
def build=(number)
def build=(number) self[2] = number end
def initialize(string)
def initialize(string) string =~ /\A[\.\d]+\Z/ or raise ArgumentError, "#{string.inspect} isn't a version number" @version = string.frozen? ? string.dup : string end
def major
def major self[0] end
def major=(number)
def major=(number) self[0] = number end
def minor
def minor self[1] end
def minor=(number)
def minor=(number) self[1] = number end
def pred!
def pred! self[-1] -= 1 end
def revision
def revision self[3] end
def revision=(number)
def revision=(number) self[3] = number end
def succ!
def succ! self[-1] += 1 end
def to_s
def to_s @version end
def version
def version self end