diff options
| -rw-r--r-- | mrbgems/mruby-enumerator/mrblib/enumerator.rb | 6 | ||||
| -rw-r--r-- | mrbgems/mruby-enumerator/test/enumerator.rb | 9 |
2 files changed, 12 insertions, 3 deletions
diff --git a/mrbgems/mruby-enumerator/mrblib/enumerator.rb b/mrbgems/mruby-enumerator/mrblib/enumerator.rb index 02d88a9e5..8641d99e0 100644 --- a/mrbgems/mruby-enumerator/mrblib/enumerator.rb +++ b/mrbgems/mruby-enumerator/mrblib/enumerator.rb @@ -156,10 +156,10 @@ class Enumerator return to_enum :with_index, offset unless block_given? raise TypeError, "no implicit conversion of #{offset.class} into Integer" unless offset.respond_to?(:to_int) - n = offset.to_int - each do |i| - yield [i,n] + n = offset.to_int - 1 + enumerator_block_call do |i| n += 1 + yield [i,n] end end diff --git a/mrbgems/mruby-enumerator/test/enumerator.rb b/mrbgems/mruby-enumerator/test/enumerator.rb index c790c1367..bbb22ee6d 100644 --- a/mrbgems/mruby-enumerator/test/enumerator.rb +++ b/mrbgems/mruby-enumerator/test/enumerator.rb @@ -396,3 +396,12 @@ assert 'modifying existing methods' do assert_equal Enumerator, {a:1}.each.class assert_equal Enumerator, (1..5).each.class end + +assert 'Array#map!' do + a = [1,2,3] + b = a.map! + b.with_index do |i, index| + [i*i, index*index] + end + assert_equal [[1,0],[4,1],[9,4]], a +end |
