class Vseries::SemanticVersion::PreRelease

Constants

BlankPreReleaseError
REGEXP

Attributes

name[RW]
number[RW]

Public Class Methods

empty() click to toggle source
# File lib/vseries/semantic_version.rb, line 23
def self.empty
  new('')
end
new(pre_release, initial_number: DEFAULT_PRE_RELEASE_INITIAL_NUMBER) click to toggle source
# File lib/vseries/semantic_version.rb, line 27
def initialize(pre_release, initial_number: DEFAULT_PRE_RELEASE_INITIAL_NUMBER)
  name, number = pre_release.match(REGEXP)&.captures

  @initial_number = initial_number
  return if name.nil? && number.nil?

  @name = name
  @number = number ? number.to_i : initial_number
end
with(name:, number: DEFAULT_PRE_RELEASE_INITIAL_NUMBER) click to toggle source
# File lib/vseries/semantic_version.rb, line 16
def self.with(name:, number: DEFAULT_PRE_RELEASE_INITIAL_NUMBER)
  instance = allocate
  instance.name = name
  instance.number = number
  instance
end

Public Instance Methods

<=>(other) click to toggle source
# File lib/vseries/semantic_version.rb, line 45
def <=>(other)
  return  0 if blank? && other.blank?
  return -1 if present? && other.blank?
  return  1 if blank? && other.present?
  return  1 if @name > other.name

  @number <=> other.number
end
blank?() click to toggle source
# File lib/vseries/semantic_version.rb, line 54
def blank?
  name.nil? && number.nil?
end
present?() click to toggle source
# File lib/vseries/semantic_version.rb, line 58
def present?
  !blank?
end
to_s() click to toggle source
# File lib/vseries/semantic_version.rb, line 62
def to_s
  return '' if blank?

  "-#{@name}.#{@number}"
end
up() click to toggle source
# File lib/vseries/semantic_version.rb, line 37
def up
  raise BlankPreReleaseError if blank?

  new_pre_release = self.dup
  new_pre_release.number = number ? number + 1 : @initial_number
  new_pre_release
end