From 861f8bdfa9fe06eda6cf1257658a1aff03ee47df Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 2 Oct 2023 00:15:01 +0900 Subject: [PATCH] mruby-enumerator: add Enumerator#size If the original object responds to `size` method, `Enumerator#size` calls that method, otherwise return `nil`. CRuby returns the exact size for more cases (e.g. Enumerable::Lazy#size), but mruby has more limitations. --- mrbgems/mruby-enumerator/mrblib/enumerator.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/mrbgems/mruby-enumerator/mrblib/enumerator.rb b/mrbgems/mruby-enumerator/mrblib/enumerator.rb index eaad43cd1..faaabf18a 100644 --- a/mrbgems/mruby-enumerator/mrblib/enumerator.rb +++ b/mrbgems/mruby-enumerator/mrblib/enumerator.rb @@ -238,6 +238,14 @@ class Enumerator end end + def size + if @size + @size + elsif @obj.respond_to?(:size) + @obj.size + end + end + ## # call-seq: # enum.each { |elm| block } -> obj