class DTK::Network::Client::ModuleRef::Version

Attributes

full_version[R]
requirement[R]
semantic_version[R]
str_version[R]

Public Class Methods

is_semantic_version?(version) click to toggle source
# File lib/client/module_ref/version.rb, line 36
def self.is_semantic_version?(version)
  SemVer.parse(version)
end
new(version = '') click to toggle source
# File lib/client/module_ref/version.rb, line 6
def initialize(version = '')
  @full_version     = version.strip
  @str_version      = ''
  @requirement      = '='
  @semantic_version = nil
  parse
end

Public Instance Methods

is_semantic_version?() click to toggle source
# File lib/client/module_ref/version.rb, line 32
def is_semantic_version?
  !!@semantic_version
end
satisfied_by?(version = nil) click to toggle source
# File lib/client/module_ref/version.rb, line 27
def satisfied_by?(version = nil)
  return unless version
  match_requirement?(version)
end
versions_in_range(versions) click to toggle source
# File lib/client/module_ref/version.rb, line 14
def versions_in_range(versions)
  v_in_range = []
  versions   = [versions] unless versions.is_a?(Array)

  versions.each do |version|
    if satisfied_by?(version)
      v_in_range << version
    end
  end

  v_in_range
end

Private Instance Methods

match_requirement?(version) click to toggle source
# File lib/client/module_ref/version.rb, line 42
def match_requirement?(version)
  case @requirement
  when '='
    version == @str_version
  when '<'
    version < @str_version
  when '>'
    version > @str_version
  when '<='
    version <= @str_version
  when '>='
    version >= @str_version
  when '~>'
    top_version = nil

    if patch = @semantic_version.patch
      top_version = "#{@semantic_version.major}.#{@semantic_version.minor + 1}.0"
    elsif minor = @semantic_version.minor
      top_version = "#{@semantic_version.major + 1}.0.0"
    end

    return false unless top_version

    (version < top_version) && (version >= @str_version)
  else
    false
  end
end
parse() click to toggle source
# File lib/client/module_ref/version.rb, line 71
def parse
  parsed = @full_version.split(' ')
  raise "Invalid version #{@full_version}!" if parsed.empty? || parsed.size > 2

  if parsed.size == 1
    @str_version = parsed.first
    @semantic_version = SemVer.parse(@str_version)
  else
    @requirement      = parsed.first
    @str_version      = parsed.last
    @semantic_version = SemVer.parse(@str_version)
  end
end