class Safedep::Policy::SemVer
Attributes
major[R]
minor[R]
patch[R]
suffix[R]
version[R]
Public Class Methods
new(version)
click to toggle source
# File lib/safedep/policy/sem_ver.rb, line 10 def initialize(version) @version = if version.is_a?(Gem::Version) version else Gem::Version.new(version) end decompose_version end
version_specifiers(version)
click to toggle source
# File lib/safedep/policy/sem_ver.rb, line 6 def self.version_specifiers(version) new(version).version_specifiers end
Public Instance Methods
version_specifiers()
click to toggle source
# File lib/safedep/policy/sem_ver.rb, line 20 def version_specifiers specifiers = ['~> ' + [major, minor].join('.')] return specifiers if satisfy_specifiers?(specifiers) specifiers = [">= #{version}", "< #{major.to_i + 1}"] return specifiers if satisfy_specifiers?(specifiers) nil end
Private Instance Methods
decompose_version()
click to toggle source
# File lib/safedep/policy/sem_ver.rb, line 32 def decompose_version elements = version.to_s.split('.') %i[major minor patch].each do |role| if elements.first && elements.first.match(/^\d+$/) instance_variable_set("@#{role}", elements.shift) else instance_variable_set("@#{role}", '0') end end @suffix = elements.shift if elements.first && !elements.first.match(/^\d+$/) end
satisfy_specifiers?(specifiers)
click to toggle source
# File lib/safedep/policy/sem_ver.rb, line 46 def satisfy_specifiers?(specifiers) requirement = Gem::Requirement.new(*specifiers) requirement.satisfied_by?(version) end