9a7d2356950c523ba1b5a775185838d645c9f4c5
1 module ActiveSupport
#:nodoc:
2 module CoreExtensions
#:nodoc:
4 # Check if a Range includes another Range.
6 def self.included(base
) #:nodoc:
7 base
.alias_method_chain
:include?, :range
10 # Extends the default Range#include? to support range comparisons.
11 # (1..5).include?(1..5) # => true
12 # (1..5).include?(2..3) # => true
13 # (1..5).include?(2..6) # => false
15 # The native Range#include? behavior is untouched.
16 # ("a".."f").include?("c") # => true
17 # (5..9).include?(11) # => false
18 def include_with_range
?(value
)
19 if value
.is_a
?(::Range)
20 operator
= exclude_end
? ? :< : :<=
21 end_value
= value
.exclude_end
? ? last
.succ
: last
22 include?(value
.first
) && (value
.last
<=> end_value
).send(operator
, 0)
24 include_without_range
?(value
)