class Semvruler::Semversion

Constants

FORMAT

Attributes

build[R]
major[R]
minor[R]
order[R]
patch[R]
prerelease[R]

Public Class Methods

new(format) click to toggle source
# File lib/semvruler/semversion.rb, line 53
def initialize(format)
  @major = format[:major].to_i
  @minor = format[:minor].to_i
  @patch = format[:patch].to_i
  @build = format[:build]
  @prerelease = format[:prerelease]&.split('.') || []
  @order = Order.new(@major, @minor, @patch, *@prerelease)
end
parse(value, safe: true) click to toggle source
# File lib/semvruler/semversion.rb, line 24
def parse(value, safe: true)
  if value.respond_to?(:map)
    value.map { |item| cast(item, safe) }
  else
    cast(value, safe)
  end
end

Private Class Methods

cast(value, safe) click to toggle source
# File lib/semvruler/semversion.rb, line 34
def cast(value, safe)
  captures = FORMAT.match(value)

  if captures
    new(captures)
  else
    raise FormatError unless safe

    nil
  end
end

Public Instance Methods

<=>(other) click to toggle source
# File lib/semvruler/semversion.rb, line 62
def <=>(other)
  order <=> other.order
end
to_s() click to toggle source
# File lib/semvruler/semversion.rb, line 49
def to_s
  "#{core_as_string}#{prerelease_as_string}#{build_as_string}"
end

Private Instance Methods

build_as_string() click to toggle source
# File lib/semvruler/semversion.rb, line 89
def build_as_string
  return unless build

  "+#{build}"
end
core_as_string() click to toggle source
# File lib/semvruler/semversion.rb, line 78
def core_as_string
  "#{major}.#{minor}.#{patch}"
end
prerelease_as_string() click to toggle source
# File lib/semvruler/semversion.rb, line 82
def prerelease_as_string
  return if prerelease.empty?

  str = prerelease.join('.')
  "-#{str}"
end