Add PreToken composite

This commit is contained in:
Ed Flanagan ed@flanagan.xyz 2017-06-27 03:17:23 -07:00
parent 4fb60d8988
commit 700b5e2738
2 changed files with 39 additions and 3 deletions

View File

@ -93,6 +93,21 @@ describe Version do
expect(Version.create("1.2.3beta2")).to be < Version.create("1.2.3-p34")
end
specify "comparing pre versions" do
expect(Version.create("1.2.3pre9")).to be == Version.create("1.2.3PRE9")
expect(Version.create("1.2.3pre9")).to be > Version.create("1.2.3pre8")
expect(Version.create("1.2.3pre8")).to be < Version.create("1.2.3pre9")
expect(Version.create("1.2.3pre9")).to be < Version.create("1.2.3pre10")
expect(Version.create("1.2.3pre3")).to be > Version.create("1.2.3alpha2")
expect(Version.create("1.2.3pre3")).to be > Version.create("1.2.3alpha4")
expect(Version.create("1.2.3pre3")).to be > Version.create("1.2.3beta3")
expect(Version.create("1.2.3pre3")).to be > Version.create("1.2.3beta5")
expect(Version.create("1.2.3pre3")).to be < Version.create("1.2.3rc2")
expect(Version.create("1.2.3pre3")).to be < Version.create("1.2.3")
expect(Version.create("1.2.3pre3")).to be < Version.create("1.2.3-p2")
end
specify "comparing RC versions" do
expect(Version.create("1.2.3rc3")).to be == Version.create("1.2.3RC3")
expect(Version.create("1.2.3rc3")).to be > Version.create("1.2.3rc2")

View File

@ -36,7 +36,7 @@ class Version
0
when NumericToken
other.value.zero? ? 0 : -1
when AlphaToken, BetaToken, RCToken
when AlphaToken, BetaToken, PreToken, RCToken
1
else
-1
@ -103,6 +103,8 @@ class Version
case other
when AlphaToken
rev <=> other.rev
when BetaToken, RCToken, PreToken, PatchToken
-1
else
super
end
@ -118,6 +120,23 @@ class Version
rev <=> other.rev
when AlphaToken
1
when PreToken, RCToken, PatchToken
-1
else
super
end
end
end
class PreToken < CompositeToken
PATTERN = /pre[0-9]*/i
def <=>(other)
case other
when PreToken
rev <=> other.rev
when AlphaToken, BetaToken
1
when RCToken, PatchToken
-1
else
@ -133,7 +152,7 @@ class Version
case other
when RCToken
rev <=> other.rev
when AlphaToken, BetaToken
when AlphaToken, BetaToken, PreToken
1
when PatchToken
-1
@ -150,7 +169,7 @@ class Version
case other
when PatchToken
rev <=> other.rev
when AlphaToken, BetaToken, RCToken
when AlphaToken, BetaToken, RCToken, PreToken
1
else
super
@ -161,6 +180,7 @@ class Version
SCAN_PATTERN = Regexp.union(
AlphaToken::PATTERN,
BetaToken::PATTERN,
PreToken::PATTERN,
RCToken::PATTERN,
PatchToken::PATTERN,
NumericToken::PATTERN,
@ -289,6 +309,7 @@ class Version
when /\A#{AlphaToken::PATTERN}\z/o then AlphaToken
when /\A#{BetaToken::PATTERN}\z/o then BetaToken
when /\A#{RCToken::PATTERN}\z/o then RCToken
when /\A#{PreToken::PATTERN}\z/o then PreToken
when /\A#{PatchToken::PATTERN}\z/o then PatchToken
when /\A#{NumericToken::PATTERN}\z/o then NumericToken
when /\A#{StringToken::PATTERN}\z/o then StringToken