--- /dev/null
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Range #:nodoc:
+ # Return an array when step is called without a block.
+ module BlocklessStep
+ def self.included(base) #:nodoc:
+ base.alias_method_chain :step, :blockless
+ end
+
+ if RUBY_VERSION < '1.9'
+ def step_with_blockless(value = 1, &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 = 1, &block)
+ if block_given?
+ step_without_blockless(value, &block)
+ else
+ step_without_blockless(value).to_a
+ end
+ end
+ end
+ end
+ end
+ end
+end