Class: Vseries::SemanticVersion::PreRelease
- Inherits:
-
Object
- Object
- Vseries::SemanticVersion::PreRelease
- Includes:
- Comparable
- Defined in:
- lib/vseries/semantic_version.rb
Constant Summary collapse
- REGEXP =
/-?(.+)\.(\d+)/
- BlankPreReleaseError =
Class.new(StandardError)
Instance Attribute Summary collapse
-
#name ⇒ Object
Returns the value of attribute name.
-
#number ⇒ Object
Returns the value of attribute number.
Class Method Summary collapse
Instance Method Summary collapse
- #<=>(other) ⇒ Object
- #blank? ⇒ Boolean
-
#initialize(pre_release, initial_number: DEFAULT_PRE_RELEASE_INITIAL_NUMBER) ⇒ PreRelease
constructor
A new instance of PreRelease.
- #present? ⇒ Boolean
- #to_s ⇒ Object
- #up ⇒ Object
Constructor Details
#initialize(pre_release, initial_number: DEFAULT_PRE_RELEASE_INITIAL_NUMBER) ⇒ PreRelease
Returns a new instance of PreRelease.
23 24 25 26 27 28 29 30 31 |
# File 'lib/vseries/semantic_version.rb', line 23 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 |
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name.
14 15 16 |
# File 'lib/vseries/semantic_version.rb', line 14 def name @name end |
#number ⇒ Object
Returns the value of attribute number.
14 15 16 |
# File 'lib/vseries/semantic_version.rb', line 14 def number @number end |
Class Method Details
.with(name:, number: DEFAULT_PRE_RELEASE_INITIAL_NUMBER) ⇒ Object
16 17 18 19 20 21 |
# 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 |
Instance Method Details
#<=>(other) ⇒ Object
41 42 43 44 45 46 47 48 |
# File 'lib/vseries/semantic_version.rb', line 41 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? ⇒ Boolean
50 51 52 |
# File 'lib/vseries/semantic_version.rb', line 50 def blank? name.nil? && number.nil? end |
#present? ⇒ Boolean
54 55 56 |
# File 'lib/vseries/semantic_version.rb', line 54 def present? !blank? end |
#to_s ⇒ Object
58 59 60 61 62 |
# File 'lib/vseries/semantic_version.rb', line 58 def to_s return '' if blank? "-#{@name}.#{@number}" end |
#up ⇒ Object
33 34 35 36 37 38 39 |
# File 'lib/vseries/semantic_version.rb', line 33 def up raise BlankPreReleaseError if blank? new_pre_release = self.dup new_pre_release.number = number ? number + 1 : @initial_number new_pre_release end |