lib/gem/release/version/number.rb in gem-release-2.0.0.dev.5 vs lib/gem/release/version/number.rb in gem-release-2.0.0.rc.1
- old
+ new
@@ -1,10 +1,10 @@
module Gem
module Release
module Version
class Number < Struct.new(:number, :target)
- NUMBER = /^(\d+)\.(\d+).(\d+).?(\w+)?.?(\d+)?$/
+ NUMBER = /^(\d+)\.?(\d+)?\.?(\d+)?\.?(\w+)?\.?(\d+)?$/
STAGES = %i(alpha beta pre rc)
def bump
return target if specific?
@@ -23,18 +23,18 @@
part += 1 if to?(:major)
part
end
def minor
- part = parts[1]
+ part = parts[1].to_i
part = 0 if to?(:major)
part += 1 if to?(:minor) || fresh_pre_release?
part
end
def patch
- part = parts[2]
+ part = parts[2].to_i
part = 0 if to?(:major, :minor) || fresh_pre_release?
part += 1 if to?(:patch) && from_release?
part
end
@@ -42,13 +42,11 @@
target unless to_release?
end
def num
return if to_release?
- part = parts[4].to_i
- part += 1 if from_release? || same_stage?
- part
+ same_stage? ? parts[4].to_i + 1 : 1
end
def to?(*targets)
targets.include?(target)
end
@@ -87,15 +85,21 @@
raise Abort, "Cannot go from an #{from_stage} version to a #{target} version"
end
def parts
@parts ||= matches.compact.map(&:to_i).tap do |parts|
- parts[3] = matches[3] && matches[3].to_sym
+ parts[3] = matches[3].to_sym if matches[3]
end
end
def matches
- @matches ||= number.match(NUMBER).to_a[1..-1]
+ @matches ||= parse.to_a[1..-1]
+ end
+
+ def parse
+ matches = number.match(NUMBER)
+ raise Abort, "Cannot parse version number #{number}" unless matches
+ matches
end
end
end
end
end