aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
diff options
context:
space:
mode:
authormiloops <miloops@gmail.com>2008-07-29 23:14:56 -0300
committerJeremy Kemper <jeremy@bitsweat.net>2008-07-30 01:52:16 -0700
commit2617d0dc5ced4b354bff9633bddafdf80ad5a711 (patch)
tree55d3b7e076ab8541c4a890aeb6226ded657d35bc /activesupport
parentc4038764d2b4c05178cceb22066e0ece59fe49d2 (diff)
downloadrails-2617d0dc5ced4b354bff9633bddafdf80ad5a711.tar.gz
rails-2617d0dc5ced4b354bff9633bddafdf80ad5a711.tar.bz2
rails-2617d0dc5ced4b354bff9633bddafdf80ad5a711.zip
Performance: grouping helpers should use yield instead of block as argument. [#723 state:resolved]
Diffstat (limited to 'activesupport')
-rw-r--r--activesupport/lib/active_support/core_ext/array/grouping.rb10
1 files changed, 5 insertions, 5 deletions
diff --git a/activesupport/lib/active_support/core_ext/array/grouping.rb b/activesupport/lib/active_support/core_ext/array/grouping.rb
index df37afb053..dd1484f8fa 100644
--- a/activesupport/lib/active_support/core_ext/array/grouping.rb
+++ b/activesupport/lib/active_support/core_ext/array/grouping.rb
@@ -19,7 +19,7 @@ module ActiveSupport #:nodoc:
# %w(1 2 3).in_groups_of(2, false) {|g| p g}
# ["1", "2"]
# ["3"]
- def in_groups_of(number, fill_with = nil, &block)
+ def in_groups_of(number, fill_with = nil)
if fill_with == false
collection = self
else
@@ -31,7 +31,7 @@ module ActiveSupport #:nodoc:
end
if block_given?
- collection.each_slice(number, &block)
+ collection.each_slice(number) { |slice| yield(slice) }
else
returning [] do |groups|
collection.each_slice(number) { |group| groups << group }
@@ -87,11 +87,11 @@ module ActiveSupport #:nodoc:
#
# [1, 2, 3, 4, 5].split(3) # => [[1, 2], [4, 5]]
# (1..10).to_a.split { |i| i % 3 == 0 } # => [[1, 2], [4, 5], [7, 8], [10]]
- def split(value = nil, &block)
- block ||= Proc.new { |e| e == value }
+ def split(value = nil)
+ using_block = block_given?
inject([[]]) do |results, element|
- if block.call(element)
+ if (using_block && yield(element)) || (value == element)
results << []
else
results.last << element