summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRob <[email protected]>2019-04-19 14:27:12 -0400
committerRob <[email protected]>2019-04-19 17:18:30 -0400
commit73bb144ef0dcf1f3dc4e721e0fd2d557f18cfe07 (patch)
treef4b737b4028149f3f5fa5e1c4a13536e644568a3
parent05f65d2d429fcc5ff6bf5f2f8729fcb5de63b2ca (diff)
downloadmruby-73bb144ef0dcf1f3dc4e721e0fd2d557f18cfe07.tar.gz
mruby-73bb144ef0dcf1f3dc4e721e0fd2d557f18cfe07.zip
Fixes the twiddle wakka comparison algorithm to support passing only a major number
-rw-r--r--lib/mruby/gem.rb10
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/mruby/gem.rb b/lib/mruby/gem.rb
index ce2e01ab1..95c1d4bc3 100644
--- a/lib/mruby/gem.rb
+++ b/lib/mruby/gem.rb
@@ -267,16 +267,18 @@ module MRuby
# ~> compare algorithm
#
# Example:
+ # ~> 2 means >= 2.0.0 and < 3.0.0
# ~> 2.2 means >= 2.2.0 and < 3.0.0
- # ~> 2.2.0 means >= 2.2.0 and < 2.3.0
+ # ~> 2.2.2 means >= 2.2.2 and < 2.3.0
def twiddle_wakka_ok?(other)
gr_or_eql = (self <=> other) >= 0
- still_minor = (self <=> other.skip_minor) < 0
- gr_or_eql and still_minor
+ still_major_or_minor = (self <=> other.skip_major_or_minor) < 0
+ gr_or_eql and still_major_or_minor
end
- def skip_minor
+ def skip_major_or_minor
a = @ary.dup
+ a << 0 if a.size == 1 # ~> 2 can also be represented as ~> 2.0
a.slice!(-1)
a[-1] = a[-1].succ
a