ranges 0.1.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.
- data/README +8 -0
- data/lib/date_extensions.rb +6 -0
- data/lib/ranges.rb +12 -0
- data/lib/time_extensions.rb +5 -0
- data/lib/time_range.rb +72 -0
- metadata +70 -0
data/README
ADDED
data/lib/ranges.rb
ADDED
data/lib/time_range.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'date'
|
2
|
+
|
3
|
+
class TimeRange
|
4
|
+
TIME_REQUIRED = "Parameters must be time objects"
|
5
|
+
START_BEFORE_END = "Start time must come before end time"
|
6
|
+
attr_reader :start_time, :end_time
|
7
|
+
|
8
|
+
def initialize(start_time, end_time)
|
9
|
+
unless start_time.is_a?(Time) && end_time.is_a?(Time)
|
10
|
+
raise ArgumentError.new(TIME_REQUIRED)
|
11
|
+
end
|
12
|
+
raise ArgumentError.new(START_BEFORE_END) unless start_time < end_time
|
13
|
+
@start_time = start_time
|
14
|
+
@end_time = end_time
|
15
|
+
end
|
16
|
+
|
17
|
+
def start_date
|
18
|
+
start_time.to_date
|
19
|
+
end
|
20
|
+
|
21
|
+
def end_date
|
22
|
+
end_time.to_date
|
23
|
+
end
|
24
|
+
|
25
|
+
def overlaps_with?(range)
|
26
|
+
range.start_time < end_time && range.end_time > start_time
|
27
|
+
end
|
28
|
+
|
29
|
+
def within?(range)
|
30
|
+
range.start_time < start_time && range.end_time > end_time
|
31
|
+
end
|
32
|
+
|
33
|
+
def wraps?(range)
|
34
|
+
range.within?(self)
|
35
|
+
end
|
36
|
+
|
37
|
+
def disjoint_to?(range)
|
38
|
+
!self.overlaps_with?(range)
|
39
|
+
end
|
40
|
+
|
41
|
+
def starts_before?(range)
|
42
|
+
start_time < range.start_time
|
43
|
+
end
|
44
|
+
|
45
|
+
def starts_after?(range)
|
46
|
+
start_time > range.start_time
|
47
|
+
end
|
48
|
+
|
49
|
+
def ends_before?(range)
|
50
|
+
end_time < range.end_time
|
51
|
+
end
|
52
|
+
|
53
|
+
def ends_after?(range)
|
54
|
+
end_time > range.end_time
|
55
|
+
end
|
56
|
+
|
57
|
+
def length_in_seconds
|
58
|
+
end_time.to_i - start_time.to_i
|
59
|
+
end
|
60
|
+
|
61
|
+
def length_in_minutes
|
62
|
+
length_in_seconds / 60.0
|
63
|
+
end
|
64
|
+
|
65
|
+
def length_in_hours
|
66
|
+
length_in_seconds / 3600.0
|
67
|
+
end
|
68
|
+
|
69
|
+
def longer_than?(range)
|
70
|
+
length_in_seconds > range.length_in_seconds
|
71
|
+
end
|
72
|
+
end
|
metadata
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ranges
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
version: 0.1.0
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Peter Zimbelman
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2011-09-05 00:00:00 -04:00
|
18
|
+
default_executable:
|
19
|
+
dependencies: []
|
20
|
+
|
21
|
+
description: Ranges is a gem which supplies a time/date range class and other functionality based around these ranges.
|
22
|
+
email: pzimbelman@gmail.com
|
23
|
+
executables: []
|
24
|
+
|
25
|
+
extensions: []
|
26
|
+
|
27
|
+
extra_rdoc_files: []
|
28
|
+
|
29
|
+
files:
|
30
|
+
- lib/date_extensions.rb
|
31
|
+
- lib/ranges.rb
|
32
|
+
- lib/time_extensions.rb
|
33
|
+
- lib/time_range.rb
|
34
|
+
- README
|
35
|
+
has_rdoc: true
|
36
|
+
homepage: http://github.com/softwarewithfriends/ranges
|
37
|
+
licenses: []
|
38
|
+
|
39
|
+
post_install_message:
|
40
|
+
rdoc_options: []
|
41
|
+
|
42
|
+
require_paths:
|
43
|
+
- lib
|
44
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
45
|
+
none: false
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
segments:
|
50
|
+
- 0
|
51
|
+
version: "0"
|
52
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
segments:
|
58
|
+
- 1
|
59
|
+
- 3
|
60
|
+
- 6
|
61
|
+
version: 1.3.6
|
62
|
+
requirements: []
|
63
|
+
|
64
|
+
rubyforge_project:
|
65
|
+
rubygems_version: 1.3.7
|
66
|
+
signing_key:
|
67
|
+
specification_version: 3
|
68
|
+
summary: "Ranges: A gem for time and date ranges."
|
69
|
+
test_files: []
|
70
|
+
|