From 384d0e2d217d9d25ec83ab9e0b464aba1d5e4bfc Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Thu, 21 Sep 2023 15:28:06 +0900 Subject: [PATCH] mruby-range-ext: implement Range#overlap? method Which is implemented in CRuby recently. --- mrbgems/mruby-range-ext/mrblib/range.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/mrbgems/mruby-range-ext/mrblib/range.rb b/mrbgems/mruby-range-ext/mrblib/range.rb index 8b670afee..e229c918a 100644 --- a/mrbgems/mruby-range-ext/mrblib/range.rb +++ b/mrbgems/mruby-range-ext/mrblib/range.rb @@ -96,4 +96,12 @@ class Range # delegate to Enumerable super() end + + # Compare two ranges and see if they overlap each other + # (1..5).overlap?(4..6) # => true + # (1..5).overlap?(7..9) # => false + def overlap?(other) + raise TypeError, "argument must be a range" unless other.kind_of?(Range) + other.begin == self.begin || self.cover?(other.begin) || other.cover?(self.begin) + end end