class SemanticRange::PreRelease
Attributes
parts[R]
Public Class Methods
new(input)
click to toggle source
# File lib/semantic_range/pre_release.rb, line 5 def initialize(input) @parts = parse(input) end
Public Instance Methods
<=>(other)
click to toggle source
# File lib/semantic_range/pre_release.rb, line 37 def <=>(other) return unless other.is_a?(self.class) return -1 if parts.any? && !other.parts.any? return 1 if !parts.any? && other.parts.any? return 0 if !parts.any? && !other.parts.any? i = 0 while true a = parts[i] b = other.parts[i] if a.nil? && b.nil? return 0 elsif b.nil? return 1 elsif a.nil? return -1 elsif a == b else return Version.compare_identifiers(a, b) end i += 1 end end
clear!()
click to toggle source
# File lib/semantic_range/pre_release.rb, line 29 def clear! @parts = [] end
convert(str)
click to toggle source
# File lib/semantic_range/pre_release.rb, line 13 def convert(str) str.match(/^[0-9]+$/) ? str.to_i : str end
empty?()
click to toggle source
# File lib/semantic_range/pre_release.rb, line 21 def empty? parts.empty? end
increment!(identifier = nil)
click to toggle source
# File lib/semantic_range/pre_release.rb, line 68 def increment!(identifier = nil) if empty? zero! else if last_number_index @parts[last_number_index] += 1 else @parts << 0 end end if identifier # 1.2.0-beta.1 bumps to 1.2.0-beta.2, # 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 if parts[0] == identifier unless parts[1].kind_of?(Integer) @parts = [identifier, 0] end else @parts = [identifier, 0] end end end
last_number_index()
click to toggle source
# File lib/semantic_range/pre_release.rb, line 64 def last_number_index parts.rindex { |e| e.is_a? Integer } end
length()
click to toggle source
# File lib/semantic_range/pre_release.rb, line 17 def length parts.length end
parse(str)
click to toggle source
# File lib/semantic_range/pre_release.rb, line 9 def parse(str) str.to_s.split('.').map { |id| convert(id) } end
to_s()
click to toggle source
# File lib/semantic_range/pre_release.rb, line 25 def to_s parts.join '.' end
zero!()
click to toggle source
# File lib/semantic_range/pre_release.rb, line 33 def zero! @parts = [0] end