Ruby 1.9: use enumerator for blockless Range#step

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8469 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Jeremy Kemper
2007-12-21 12:26:40 +00:00
parent 7630b38e22
commit 99664d5444

View File

@@ -7,12 +7,22 @@ module ActiveSupport #:nodoc:
base.alias_method_chain :step, :blockless
end
def step_with_blockless(value, &block)
if block_given?
step_without_blockless(value, &block)
else
returning [] do |array|
step_without_blockless(value) { |step| array << step }
if RUBY_VERSION < '1.9'
def step_with_blockless(value, &block)
if block_given?
step_without_blockless(value, &block)
else
returning [] do |array|
step_without_blockless(value) { |step| array << step }
end
end
end
else
def step_with_blockless(value, &block)
if block_given?
step_without_blockless(value, &block)
else
step_without_blockless(value).to_a
end
end
end