class Vseries::SemanticVersion
Constants
- DEFAULT_PRE_RELEASE_INITIAL_NUMBER
- REGEXP
Attributes
major[RW]
minor[RW]
patch[RW]
pre_release[RW]
Public Class Methods
new(version, pre_release_initial_number: DEFAULT_PRE_RELEASE_INITIAL_NUMBER)
click to toggle source
# File lib/vseries/semantic_version.rb, line 71 def initialize(version, pre_release_initial_number: DEFAULT_PRE_RELEASE_INITIAL_NUMBER) major, minor, patch, pre_release = version.match(REGEXP).captures @major = major.to_i @minor = minor.to_i @patch = patch.to_i @pre_release = PreRelease.new(pre_release) @pre_release_initial_number = pre_release_initial_number freeze end
Public Instance Methods
<=>(other)
click to toggle source
# File lib/vseries/semantic_version.rb, line 127 def <=>(other) return 1 if major > other.major return 1 if major == other.major && minor > other.minor return 1 if major == other.major && minor == other.minor && patch > other.patch return 1 if major == other.major && minor == other.minor && patch == other.patch && pre_release > other.pre_release return 0 if major == other.major && minor == other.minor && patch == other.patch && pre_release == other.pre_release -1 end
pre_release?()
click to toggle source
# File lib/vseries/semantic_version.rb, line 123 def pre_release? pre_release.present? end
release_version()
click to toggle source
# File lib/vseries/semantic_version.rb, line 117 def release_version new_version = self.dup new_version.pre_release = PreRelease.empty new_version end
to_s()
click to toggle source
# File lib/vseries/semantic_version.rb, line 137 def to_s version = "#{@major}.#{@minor}.#{@patch}" version << @pre_release.to_s if @pre_release version end
up(version_type)
click to toggle source
# File lib/vseries/semantic_version.rb, line 84 def up(version_type) new_version = self.dup case version_type when :major new_version.major += 1 new_version.minor = 0 new_version.patch = 0 new_version.pre_release.number = @pre_release_initial_number if pre_release? when :minor new_version.minor += 1 new_version.patch = 0 new_version.pre_release.number = @pre_release_initial_number if pre_release? when :patch new_version.patch += 1 new_version.pre_release.number = @pre_release_initial_number if pre_release? when :pre_release new_version.pre_release = new_version.pre_release.up end new_version end
with_pre_release(name)
click to toggle source
# File lib/vseries/semantic_version.rb, line 107 def with_pre_release(name) new_version = self.dup return new_version if new_version.pre_release? && new_version.pre_release.name == name new_version.pre_release = PreRelease.with(name: name) new_version end