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