summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-enumerator
diff options
context:
space:
mode:
authorChristopher Aue <[email protected]>2017-07-30 13:19:31 +0200
committerChristopher Aue <[email protected]>2017-07-30 13:19:31 +0200
commit3359b86ec7284234ae088ab682f82a0603029c34 (patch)
tree0e6e5f5dcb967d3a874a4d4f442bc4147818d98c /mrbgems/mruby-enumerator
parentc8fdab8725d58375ccdbd9816e48fdb021a199d4 (diff)
downloadmruby-3359b86ec7284234ae088ab682f82a0603029c34.tar.gz
mruby-3359b86ec7284234ae088ab682f82a0603029c34.zip
Improved speed of enumeration methods
Diffstat (limited to 'mrbgems/mruby-enumerator')
-rw-r--r--mrbgems/mruby-enumerator/mrblib/enumerator.rb19
1 files changed, 10 insertions, 9 deletions
diff --git a/mrbgems/mruby-enumerator/mrblib/enumerator.rb b/mrbgems/mruby-enumerator/mrblib/enumerator.rb
index a60f19aaf..c872ceedc 100644
--- a/mrbgems/mruby-enumerator/mrblib/enumerator.rb
+++ b/mrbgems/mruby-enumerator/mrblib/enumerator.rb
@@ -110,7 +110,7 @@ class Enumerator
# p fib.take(10) # => [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
#
def initialize(obj=nil, meth=:each, *args, &block)
- if block_given?
+ if block
obj = Generator.new(&block)
else
raise ArgumentError unless obj
@@ -151,8 +151,9 @@ class Enumerator
#
# +offset+:: the starting index to use
#
- def with_index(offset=0)
- return to_enum :with_index, offset unless block_given?
+ def with_index(offset=0, &block)
+ return to_enum :with_index, offset unless block
+
offset = if offset.nil?
0
elsif offset.respond_to?(:to_int)
@@ -164,7 +165,7 @@ class Enumerator
n = offset - 1
enumerator_block_call do |*i|
n += 1
- yield i.__svalue, n
+ block.call i.__svalue, n
end
end
@@ -209,11 +210,11 @@ class Enumerator
# # => foo:1
# # => foo:2
#
- def with_object(object)
- return to_enum(:with_object, object) unless block_given?
+ def with_object(object, &block)
+ return to_enum(:with_object, object) unless block
enumerator_block_call do |i|
- yield [i,object]
+ block.call [i,object]
end
object
end
@@ -277,7 +278,7 @@ class Enumerator
end
obj.args = args
end
- return obj unless block_given?
+ return obj unless block
enumerator_block_call(&block)
end
@@ -538,7 +539,7 @@ class Enumerator
# just for internal
class Yielder
def initialize(&block)
- raise LocalJumpError, "no block given" unless block_given?
+ raise LocalJumpError, "no block given" unless block
@proc = block
end