diff options
Diffstat (limited to 'activesupport')
3 files changed, 40 insertions, 58 deletions
diff --git a/activesupport/lib/active_support/core_ext/range.rb b/activesupport/lib/active_support/core_ext/range.rb index 8879519e7c..c0736f3a44 100644 --- a/activesupport/lib/active_support/core_ext/range.rb +++ b/activesupport/lib/active_support/core_ext/range.rb @@ -1,5 +1,4 @@ +require 'active_support/core_ext/range/blockless_step' require 'active_support/core_ext/range/conversions' +require 'active_support/core_ext/range/include_range' require 'active_support/core_ext/range/overlaps' - -require 'active_support/core_ext/util' -ActiveSupport.core_ext Range, %w(include_range blockless_step) diff --git a/activesupport/lib/active_support/core_ext/range/blockless_step.rb b/activesupport/lib/active_support/core_ext/range/blockless_step.rb index 6fa1eb5bee..98f333786d 100644 --- a/activesupport/lib/active_support/core_ext/range/blockless_step.rb +++ b/activesupport/lib/active_support/core_ext/range/blockless_step.rb @@ -1,32 +1,24 @@ -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 +class Range + if RUBY_VERSION < '1.9' + # Return an array when step is called without a block. + def step_with_blockless(value = 1, &block) + if block_given? + step_without_blockless(value, &block) + else + array = [] + step_without_blockless(value) { |step| array << step } + array + end + end + else + def step_with_blockless(value = 1, &block) #:nodoc: + if block_given? + step_without_blockless + else + step_without_blockless(value).to_a end end end + + alias_method_chain :step, :blockless end diff --git a/activesupport/lib/active_support/core_ext/range/include_range.rb b/activesupport/lib/active_support/core_ext/range/include_range.rb index 9a7d235695..0246627467 100644 --- a/activesupport/lib/active_support/core_ext/range/include_range.rb +++ b/activesupport/lib/active_support/core_ext/range/include_range.rb @@ -1,30 +1,21 @@ -module ActiveSupport #:nodoc: - module CoreExtensions #:nodoc: - module Range #:nodoc: - # Check if a Range includes another Range. - module IncludeRange - def self.included(base) #:nodoc: - base.alias_method_chain :include?, :range - end - - # Extends the default Range#include? to support range comparisons. - # (1..5).include?(1..5) # => true - # (1..5).include?(2..3) # => true - # (1..5).include?(2..6) # => false - # - # The native Range#include? behavior is untouched. - # ("a".."f").include?("c") # => true - # (5..9).include?(11) # => false - def include_with_range?(value) - if value.is_a?(::Range) - operator = exclude_end? ? :< : :<= - end_value = value.exclude_end? ? last.succ : last - include?(value.first) && (value.last <=> end_value).send(operator, 0) - else - include_without_range?(value) - end - end - end +class Range + # Extends the default Range#include? to support range comparisons. + # (1..5).include?(1..5) # => true + # (1..5).include?(2..3) # => true + # (1..5).include?(2..6) # => false + # + # The native Range#include? behavior is untouched. + # ("a".."f").include?("c") # => true + # (5..9).include?(11) # => false + def include_with_range?(value) + if value.is_a?(::Range) + operator = exclude_end? ? :< : :<= + end_value = value.exclude_end? ? last.succ : last + include_without_range?(value.first) && (value.last <=> end_value).send(operator, 0) + else + include_without_range?(value) end end + + alias_method_chain :include?, :range end |