Class: DateRangeOverlap

Inherits:
Object
  • Object
show all
Defined in:
lib/date_range_overlap.rb

Class Method Summary collapse

Class Method Details

.overlap_range(range1, range2) ⇒ Range?

Finds the overlap range and return it

Parameters:

  • range1 (Range)

    the first range to compare

  • range2 (Range)

    the second range to compare

Returns:

  • (Range, nil)

    the overlap range if exists. nil, otherwise



32
33
34
35
36
37
38
# File 'lib/date_range_overlap.rb', line 32

def self.overlap_range(range1, range2)

return nil unless self.overlaps?(range1, range2)

return [@range1.first, @range2.first].max..[@range1.last,@range2.last].min

end

.overlaps?(range1, range2) ⇒ Boolean

Tells if the two ranges passed as parameters overlap each other

Parameters:

  • range1 (Range)

    the first range to compare

  • range2 (Range)

    the second range to compare

Returns:

  • (Boolean)

    true if the two ranges overlap each other. false, otherwise.



14
15
16
17
18
19
20
21
22
23
# File 'lib/date_range_overlap.rb', line 14

def self.overlaps?(range1, range2)
	@range1 = range1.first < range1.last ? 
				range1 : range1.last..range1.first
	@range2 = range2.first < range2.last ? 
				range2 : range2.last..range2.first

	return true if ((@range1.first - @range2.last) * 
					(@range2.first - @range1.last)) >= 0
	return false
end