class Gversion

Constants

PATTERN

Attributes

major[R]
minor[R]
revision[R]

Public Class Methods

[](*array) click to toggle source
# File lib/gversion.rb, line 22
def self.[](*array)
  new(major: array[0].to_i,
      minor: array[1].to_i,
      revision: array[2].to_i)
end
greater_or_equal_than_version?(version, from_version) click to toggle source
# File lib/gversion.rb, line 51
def self.greater_or_equal_than_version?(version, from_version)
  self.parse!(version) >= self.parse(from_version)
end
in_version_range?(version, from_version, to_version) click to toggle source
# File lib/gversion.rb, line 59
def self.in_version_range?(version, from_version, to_version)
  v = self.parse!(version)
  min = self.parse!(from_version)
  max = self.parse!(to_version)

  v.between?(min, max)
end
lesser_than_version?(version, from_version) click to toggle source
# File lib/gversion.rb, line 55
def self.lesser_than_version?(version, from_version)
  !self.greater_or_equal_than_version?(version, from_version)
end
new(options) click to toggle source
# File lib/gversion.rb, line 8
def initialize(options)
  [:major, :minor, :revision].each do |field|
    validate_field(field, options[field])
    instance_variable_set("@#{field}", options[field] || 0)
  end
end
parse(string) click to toggle source
# File lib/gversion.rb, line 15
def self.parse(string)
  match = PATTERN.match(string)
  return nil unless match

  self[match[:major], match[:minor], match[:revision]]
end
parse!(string, _options = {}) click to toggle source
# File lib/gversion.rb, line 28
def self.parse!(string, _options = {})
  parse(string) || (fail ArgumentError, 'invalid version format')
end

Public Instance Methods

<=>(other) click to toggle source
# File lib/gversion.rb, line 32
def <=>(other)
  comparison = 0
  [:major, :minor, :revision].each do |field|
    comparison = send(field) <=> other.send(field)
    break if comparison != 0
  end

  comparison
end
to_f() click to toggle source
# File lib/gversion.rb, line 46
def to_f
  # Will be wrong float number if minor > 9
  @as_float ||= [major, minor].join('.').to_f
end
to_s() click to toggle source
# File lib/gversion.rb, line 42
def to_s
  @as_string ||= [major, minor, revision].join('.')
end

Private Instance Methods

validate_field(field, value) click to toggle source
# File lib/gversion.rb, line 69
def validate_field(field, value)
  return unless value

  fail ArgumentError, "#{field} field must be an integer" unless value.is_a?(Integer)
end