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-string-ext/mrblib/string.rb | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'mrbgems/mruby-string-ext') diff --git a/mrbgems/mruby-string-ext/mrblib/string.rb b/mrbgems/mruby-string-ext/mrblib/string.rb index e57d75355..32914d074 100644 --- a/mrbgems/mruby-string-ext/mrblib/string.rb +++ b/mrbgems/mruby-string-ext/mrblib/string.rb @@ -444,4 +444,27 @@ class String end self end + + def __upto_endless(&block) + return to_enum(:__upto_endless) unless block + + len = self.length + # both edges are all digits + bi = self.to_i(10) + if bi > 0 or bi == "0"*len + while true + s = bi.to_s + s = s.rjust(len, "0") if s.length < len + yield s + bi += 1 + end + return self + end + bs = self + while true + yield bs + bs = bs.succ + end + self + end end -- cgit v1.2.3