From bec4d053400c3a11c8efd68c3e8bd5ea4a0bcc54 Mon Sep 17 00:00:00 2001 From: taiyoslime Date: Mon, 5 Oct 2020 19:53:05 +0900 Subject: Introduce endless range (a part of #5085) Co-Authored-By: n4o847 <22975590+n4o847@users.noreply.github.com> Co-Authored-By: smallkirby --- mrbgems/mruby-range-ext/mrblib/range.rb | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'mrbgems/mruby-range-ext/mrblib') diff --git a/mrbgems/mruby-range-ext/mrblib/range.rb b/mrbgems/mruby-range-ext/mrblib/range.rb index a213beb57..8b0969003 100644 --- a/mrbgems/mruby-range-ext/mrblib/range.rb +++ b/mrbgems/mruby-range-ext/mrblib/range.rb @@ -27,10 +27,12 @@ class Range end def max(&block) - val = self.first - last = self.last + val = self.begin + last = self.end return super if block + raise RangeError, "cannot get the maximum of endless range" if last.nil? + # fast path for numerics if val.kind_of?(Numeric) && last.kind_of?(Numeric) raise TypeError if exclude_end? && !last.kind_of?(Fixnum) @@ -47,9 +49,13 @@ class Range end def min(&block) - val = self.first - last = self.last - return super if block + val = self.begin + last = self.end + if block + raise RangeError, "cannot get the minimum of endless range with custom comparison method" if last.nil? + return super + end + return val if last.nil? # fast path for numerics if val.kind_of?(Numeric) && last.kind_of?(Numeric) -- cgit v1.2.3