date_range_overlap 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/date_range_overlap.rb +39 -0
- metadata +72 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b24dd81af560a2fea8d9ebe829b129781e3e3831
|
4
|
+
data.tar.gz: 5968e6d2c0a5ec737e4eedb318c2bfcb598d8a5b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 166b2223271881391103e2b92b50302fa6c515f151d0ed8caa68efe4b6ec7626801519eb0dea290f10dfdefc9b00951bceb74fd1e6bf786ca4e5f00c8c8d989d
|
7
|
+
data.tar.gz: 2cc08183ce8eff353504445f401bfdd9a194c31cb8fd586ece44a5e2c52820b810be924771c35c56130e78ab69aad97c243ceaefe14efb217e9353aece09987c
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'date'
|
2
|
+
require 'active_support/time'
|
3
|
+
|
4
|
+
class DateRangeOverlap
|
5
|
+
|
6
|
+
# Tells if the two ranges passed as parameters overlap
|
7
|
+
# each other
|
8
|
+
#
|
9
|
+
# @param [Range] range1 the first range to compare
|
10
|
+
# @param [Range] range2 the second range to compare
|
11
|
+
# @return [Boolean] true if the two ranges overlap each
|
12
|
+
# other. false, otherwise.
|
13
|
+
#
|
14
|
+
def self.overlaps?(range1, range2)
|
15
|
+
@range1 = range1.first < range1.last ?
|
16
|
+
range1 : range1.last..range1.first
|
17
|
+
@range2 = range2.first < range2.last ?
|
18
|
+
range2 : range2.last..range2.first
|
19
|
+
|
20
|
+
return true if ((@range1.first - @range2.last) *
|
21
|
+
(@range2.first - @range1.last)) >= 0
|
22
|
+
return false
|
23
|
+
end
|
24
|
+
|
25
|
+
# Finds the overlap range and return it
|
26
|
+
#
|
27
|
+
# @param [Range] range1 the first range to compare
|
28
|
+
# @param [Range] range2 the second range to compare
|
29
|
+
# @return [Range, nil] the overlap range if exists.
|
30
|
+
# nil, otherwise
|
31
|
+
#
|
32
|
+
def self.overlap_range(range1, range2)
|
33
|
+
|
34
|
+
return nil unless self.overlaps?(range1, range2)
|
35
|
+
|
36
|
+
return [@range1.first, @range2.first].max..[@range1.last,@range2.last].min
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
metadata
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: date_range_overlap
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Alexandra Yamaui
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-08-04 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.3'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activesupport
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '4.2'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '4.2'
|
41
|
+
description: A simple gem to find date ranges overlap
|
42
|
+
email: alexandra.yamaui@gmail.com
|
43
|
+
executables: []
|
44
|
+
extensions: []
|
45
|
+
extra_rdoc_files: []
|
46
|
+
files:
|
47
|
+
- lib/date_range_overlap.rb
|
48
|
+
homepage: http://rubygems.org/gems/date_range_overlap
|
49
|
+
licenses:
|
50
|
+
- MIT
|
51
|
+
metadata: {}
|
52
|
+
post_install_message:
|
53
|
+
rdoc_options: []
|
54
|
+
require_paths:
|
55
|
+
- lib
|
56
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
requirements: []
|
67
|
+
rubyforge_project:
|
68
|
+
rubygems_version: 2.4.8
|
69
|
+
signing_key:
|
70
|
+
specification_version: 4
|
71
|
+
summary: Date ranges overlap
|
72
|
+
test_files: []
|