time_keeper 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.
@@ -0,0 +1,102 @@
1
+ require 'spec_helper'
2
+
3
+ describe TimeKeeper::TimeRangeManipulation do
4
+ #
5
+ # before do
6
+ # Time.zone = "Asia/Singapore"
7
+ # end
8
+ #
9
+ # template "split time range by day" do
10
+ #
11
+ # example "range: 24h exactly",
12
+ # "2010-01-01 00:00:00",
13
+ # "2010-01-02 00:00:00",
14
+ # [
15
+ # ["2010-01-01 00:00:00", "2010-01-01 23:59:59"],
16
+ # ["2010-01-02 00:00:00", "2010-01-02 00:00:00"],
17
+ # ]
18
+ #
19
+ # example "range < 24h",
20
+ # "2010-01-01 00:00:00",
21
+ # "2010-01-01 23:59:59",
22
+ # [
23
+ # ["2010-01-01 00:00:00", "2010-01-01 23:59:59"],
24
+ # ]
25
+ #
26
+ # example "range < 24h offset",
27
+ # "2010-01-01 05:00:00",
28
+ # "2010-01-02 04:59:59",
29
+ # [
30
+ # ["2010-01-01 05:00:00", "2010-01-01 23:59:59"],
31
+ # ["2010-01-02 00:00:00", "2010-01-02 04:59:59"],
32
+ # ]
33
+ #
34
+ # example "range night diff",
35
+ # "2010-01-01 22:00:00",
36
+ # "2010-01-02 06:00:00",
37
+ # [
38
+ # ["2010-01-01 22:00:00", "2010-01-01 23:59:59"],
39
+ # ["2010-01-02 00:00:00", "2010-01-02 06:00:00"],
40
+ # ]
41
+ #
42
+ # example "range > 24h",
43
+ # "2010-01-01 00:00:00",
44
+ # "2010-01-02 00:00:01",
45
+ # [
46
+ # ["2010-01-01 00:00:00", "2010-01-01 23:59:59"],
47
+ # ["2010-01-02 00:00:00", "2010-01-02 00:00:01"],
48
+ # ]
49
+ #
50
+ # example "3 days",
51
+ # "2010-01-01 00:00:00",
52
+ # "2010-01-03 10:00:00",
53
+ # [
54
+ # ["2010-01-01 00:00:00", "2010-01-01 23:59:59"],
55
+ # ["2010-01-02 00:00:00", "2010-01-02 23:59:59"],
56
+ # ["2010-01-03 00:00:00", "2010-01-03 10:00:00"],
57
+ # ]
58
+ #
59
+ # example "range = 0",
60
+ # "2010-01-01 00:00:00",
61
+ # "2010-01-01 00:00:00",
62
+ # [
63
+ # ["2010-01-01 00:00:00", "2010-01-01 00:00:00"],
64
+ # ]
65
+ #
66
+ # example "range < 0",
67
+ # "2010-01-02 00:00:00",
68
+ # "2010-01-01 00:05:00",
69
+ # [
70
+ # ["2010-01-02 00:00:00", "2010-01-01 00:05:00"],
71
+ # ]
72
+ #
73
+ # example "range < -24h",
74
+ # "2010-01-03 00:00:00",
75
+ # "2010-01-01 00:05:00",
76
+ # [
77
+ # ["2010-01-03 00:00:00", "2010-01-01 00:05:00"],
78
+ # ]
79
+ #
80
+ # def subject
81
+ # TimeKeeper::TimeRangeManipulation
82
+ # end
83
+ #
84
+ # each do |from, to, expected|
85
+ # range = Chronic.parse(from) .. Chronic.parse(to)
86
+ # r = Timeout.timeout(1) do
87
+ # subject.split_time_range_by_day(range)
88
+ # end
89
+ # expected = expected.map { |i|
90
+ # Chronic.parse(i.first) .. Chronic.parse(i.last)
91
+ # }
92
+ # fix_float_errors(r).should == expected
93
+ # end
94
+ #
95
+ # def fix_float_errors(r)
96
+ # r.map { |i|
97
+ # Chronic.parse(i.first.to_s) .. Chronic.parse(i.last.to_s)
98
+ # }
99
+ # end
100
+
101
+ # end
102
+ end
@@ -0,0 +1,96 @@
1
+ require 'spec_helper'
2
+
3
+ describe TimeKeeper::TimeRange do
4
+ subject do
5
+ TimeKeeper::TimeRange.new("05:30 to 16:00")
6
+ end
7
+
8
+ describe "#initialize" do
9
+ it "should set range" do
10
+ TimeKeeper::TimeRange.new("05:30 am to 04:10 pm").instance_variable_get("@range").should eq("05:30 am-04:10 pm")
11
+ end
12
+ end
13
+
14
+ describe "#parse" do
15
+ it "should set the start time" do
16
+ subject.parse
17
+ subject.instance_variable_get("@start_time").in_minutes.should eq(330)
18
+ end
19
+
20
+ it "should set the start day" do
21
+ subject.parse
22
+ subject.instance_variable_get('@start_day').should eq(0)
23
+ end
24
+
25
+ it "should set the end time" do
26
+ subject.parse
27
+ subject.instance_variable_get('@end_time').in_minutes.should eq(960)
28
+ end
29
+
30
+ it "should set the end day" do
31
+ subject.parse
32
+ subject.instance_variable_get('@end_day').should eq(0)
33
+ end
34
+
35
+ it "should return the TimeKeeper::TimeRange object" do
36
+ subject.parse.should eq(subject)
37
+ end
38
+ end
39
+
40
+ describe "#days_elapsed" do
41
+ context "when schedule passes to the next day" do
42
+ before(:each) do
43
+ subject.instance_variable_set("@start_time", TimeKeeper::CustomTime.new("22:00").parse)
44
+ subject.instance_variable_set("@end_time", TimeKeeper::CustomTime.new("06:00").parse)
45
+ end
46
+
47
+ it "should set to next day" do
48
+ subject.send(:days_elapsed).should eq(1)
49
+ end
50
+ end
51
+
52
+ context "when schedule is on the same day" do
53
+ before(:each) do
54
+ subject.instance_variable_set("@start_time", TimeKeeper::CustomTime.new("05:30").parse)
55
+ subject.instance_variable_set("@end_time", TimeKeeper::CustomTime.new("13:00").parse)
56
+ end
57
+
58
+ it "should set to next day to same day" do
59
+ subject.send(:days_elapsed).should eq(0)
60
+ end
61
+ end
62
+ end
63
+
64
+ describe "#duration_in_seconds" do
65
+ before(:each) do
66
+ subject.range = "10:00 to 09:00"
67
+ subject.parse
68
+ end
69
+
70
+ it "should return the duration of the time interval in seconds" do
71
+ subject.duration_in_seconds.should eq(82800)
72
+ end
73
+ end
74
+
75
+ describe "#duration_in_minutes" do
76
+ before(:each) do
77
+ subject.range = "10:00 to 09:00"
78
+ subject.parse
79
+ end
80
+
81
+ it "should return the duration of the time interval in minutes" do
82
+ subject.duration_in_minutes.should eq(1380)
83
+ end
84
+ end
85
+
86
+ describe "#duration_in_hours" do
87
+ before(:each) do
88
+ subject.range = "10:00 to 09:00"
89
+ subject.parse
90
+ end
91
+
92
+ it "should return the duration of the time interval in minutes" do
93
+ subject.duration_in_hours.should eq(23)
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,11 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
4
+ require 'time_keeper'
5
+
6
+ RSpec.configure do |config|
7
+ config.mock_with :mocha
8
+ end
9
+
10
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
11
+
@@ -0,0 +1,4 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "TimeKeeper" do
4
+ end
@@ -0,0 +1,89 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "time_keeper"
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Suman Mukherjee"]
12
+ s.date = "2011-12-18"
13
+ s.description = "A simple gem to pass time in string format without dates and perform various useful operations on it. This has been derived from an app."
14
+ s.email = "sumanmukherjee03@gmail.com"
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".rspec",
22
+ "Gemfile",
23
+ "Gemfile.lock",
24
+ "LICENSE.txt",
25
+ "README.rdoc",
26
+ "Rakefile",
27
+ "VERSION",
28
+ "lib/time_keeper.rb",
29
+ "lib/time_keeper/custom_time.rb",
30
+ "lib/time_keeper/parser.rb",
31
+ "lib/time_keeper/parser/base.rb",
32
+ "lib/time_keeper/parser/meridian.rb",
33
+ "lib/time_keeper/parser/military.rb",
34
+ "lib/time_keeper/string_minutes_support.rb",
35
+ "lib/time_keeper/time_range.rb",
36
+ "lib/time_keeper/time_range_collection.rb",
37
+ "lib/time_keeper/time_range_manipulation.rb",
38
+ "lib/time_keeper/time_span_support.rb",
39
+ "spec/lib/time_keeper/custom_time_spec.rb",
40
+ "spec/lib/time_keeper/parser/base_spec.rb",
41
+ "spec/lib/time_keeper/parser/meridian_spec.rb",
42
+ "spec/lib/time_keeper/parser/military_spec.rb",
43
+ "spec/lib/time_keeper/time_range_collection_spec.rb",
44
+ "spec/lib/time_keeper/time_range_manipulation_spec.rb",
45
+ "spec/lib/time_keeper/time_range_spec.rb",
46
+ "spec/spec_helper.rb",
47
+ "spec/time_keeper_spec.rb",
48
+ "time_keeper.gemspec"
49
+ ]
50
+ s.homepage = "http://github.com/sumanmukherjee03/time_keeper"
51
+ s.licenses = ["MIT"]
52
+ s.require_paths = ["lib"]
53
+ s.rubygems_version = "1.8.10"
54
+ s.summary = "Define time without dates as strings, perform operations on time spans and collection of time spans."
55
+
56
+ if s.respond_to? :specification_version then
57
+ s.specification_version = 3
58
+
59
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
60
+ s.add_runtime_dependency(%q<activemodel>, ["< 3.1.0", ">= 3.0.0"])
61
+ s.add_runtime_dependency(%q<activesupport>, ["< 3.1.0", ">= 3.0.0"])
62
+ s.add_development_dependency(%q<rspec>, ["~> 2.0.0"])
63
+ s.add_development_dependency(%q<mocha>, [">= 0"])
64
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
65
+ s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
66
+ s.add_development_dependency(%q<rcov>, [">= 0"])
67
+ s.add_development_dependency(%q<ruby-debug>, [">= 0"])
68
+ else
69
+ s.add_dependency(%q<activemodel>, ["< 3.1.0", ">= 3.0.0"])
70
+ s.add_dependency(%q<activesupport>, ["< 3.1.0", ">= 3.0.0"])
71
+ s.add_dependency(%q<rspec>, ["~> 2.0.0"])
72
+ s.add_dependency(%q<mocha>, [">= 0"])
73
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
74
+ s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
75
+ s.add_dependency(%q<rcov>, [">= 0"])
76
+ s.add_dependency(%q<ruby-debug>, [">= 0"])
77
+ end
78
+ else
79
+ s.add_dependency(%q<activemodel>, ["< 3.1.0", ">= 3.0.0"])
80
+ s.add_dependency(%q<activesupport>, ["< 3.1.0", ">= 3.0.0"])
81
+ s.add_dependency(%q<rspec>, ["~> 2.0.0"])
82
+ s.add_dependency(%q<mocha>, [">= 0"])
83
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
84
+ s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
85
+ s.add_dependency(%q<rcov>, [">= 0"])
86
+ s.add_dependency(%q<ruby-debug>, [">= 0"])
87
+ end
88
+ end
89
+
metadata ADDED
@@ -0,0 +1,231 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: time_keeper
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Suman Mukherjee
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-12-18 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ version_requirements: &id001 !ruby/object:Gem::Requirement
22
+ none: false
23
+ requirements:
24
+ - - <
25
+ - !ruby/object:Gem::Version
26
+ hash: 3
27
+ segments:
28
+ - 3
29
+ - 1
30
+ - 0
31
+ version: 3.1.0
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ hash: 7
35
+ segments:
36
+ - 3
37
+ - 0
38
+ - 0
39
+ version: 3.0.0
40
+ requirement: *id001
41
+ type: :runtime
42
+ prerelease: false
43
+ name: activemodel
44
+ - !ruby/object:Gem::Dependency
45
+ version_requirements: &id002 !ruby/object:Gem::Requirement
46
+ none: false
47
+ requirements:
48
+ - - <
49
+ - !ruby/object:Gem::Version
50
+ hash: 3
51
+ segments:
52
+ - 3
53
+ - 1
54
+ - 0
55
+ version: 3.1.0
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ hash: 7
59
+ segments:
60
+ - 3
61
+ - 0
62
+ - 0
63
+ version: 3.0.0
64
+ requirement: *id002
65
+ type: :runtime
66
+ prerelease: false
67
+ name: activesupport
68
+ - !ruby/object:Gem::Dependency
69
+ version_requirements: &id003 !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ~>
73
+ - !ruby/object:Gem::Version
74
+ hash: 15
75
+ segments:
76
+ - 2
77
+ - 0
78
+ - 0
79
+ version: 2.0.0
80
+ requirement: *id003
81
+ type: :development
82
+ prerelease: false
83
+ name: rspec
84
+ - !ruby/object:Gem::Dependency
85
+ version_requirements: &id004 !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ hash: 3
91
+ segments:
92
+ - 0
93
+ version: "0"
94
+ requirement: *id004
95
+ type: :development
96
+ prerelease: false
97
+ name: mocha
98
+ - !ruby/object:Gem::Dependency
99
+ version_requirements: &id005 !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
102
+ - - ~>
103
+ - !ruby/object:Gem::Version
104
+ hash: 23
105
+ segments:
106
+ - 1
107
+ - 0
108
+ - 0
109
+ version: 1.0.0
110
+ requirement: *id005
111
+ type: :development
112
+ prerelease: false
113
+ name: bundler
114
+ - !ruby/object:Gem::Dependency
115
+ version_requirements: &id006 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ~>
119
+ - !ruby/object:Gem::Version
120
+ hash: 7
121
+ segments:
122
+ - 1
123
+ - 6
124
+ - 4
125
+ version: 1.6.4
126
+ requirement: *id006
127
+ type: :development
128
+ prerelease: false
129
+ name: jeweler
130
+ - !ruby/object:Gem::Dependency
131
+ version_requirements: &id007 !ruby/object:Gem::Requirement
132
+ none: false
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ hash: 3
137
+ segments:
138
+ - 0
139
+ version: "0"
140
+ requirement: *id007
141
+ type: :development
142
+ prerelease: false
143
+ name: rcov
144
+ - !ruby/object:Gem::Dependency
145
+ version_requirements: &id008 !ruby/object:Gem::Requirement
146
+ none: false
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ hash: 3
151
+ segments:
152
+ - 0
153
+ version: "0"
154
+ requirement: *id008
155
+ type: :development
156
+ prerelease: false
157
+ name: ruby-debug
158
+ description: A simple gem to pass time in string format without dates and perform various useful operations on it. This has been derived from an app.
159
+ email: sumanmukherjee03@gmail.com
160
+ executables: []
161
+
162
+ extensions: []
163
+
164
+ extra_rdoc_files:
165
+ - LICENSE.txt
166
+ - README.rdoc
167
+ files:
168
+ - .document
169
+ - .rspec
170
+ - Gemfile
171
+ - Gemfile.lock
172
+ - LICENSE.txt
173
+ - README.rdoc
174
+ - Rakefile
175
+ - VERSION
176
+ - lib/time_keeper.rb
177
+ - lib/time_keeper/custom_time.rb
178
+ - lib/time_keeper/parser.rb
179
+ - lib/time_keeper/parser/base.rb
180
+ - lib/time_keeper/parser/meridian.rb
181
+ - lib/time_keeper/parser/military.rb
182
+ - lib/time_keeper/string_minutes_support.rb
183
+ - lib/time_keeper/time_range.rb
184
+ - lib/time_keeper/time_range_collection.rb
185
+ - lib/time_keeper/time_range_manipulation.rb
186
+ - lib/time_keeper/time_span_support.rb
187
+ - spec/lib/time_keeper/custom_time_spec.rb
188
+ - spec/lib/time_keeper/parser/base_spec.rb
189
+ - spec/lib/time_keeper/parser/meridian_spec.rb
190
+ - spec/lib/time_keeper/parser/military_spec.rb
191
+ - spec/lib/time_keeper/time_range_collection_spec.rb
192
+ - spec/lib/time_keeper/time_range_manipulation_spec.rb
193
+ - spec/lib/time_keeper/time_range_spec.rb
194
+ - spec/spec_helper.rb
195
+ - spec/time_keeper_spec.rb
196
+ - time_keeper.gemspec
197
+ homepage: http://github.com/sumanmukherjee03/time_keeper
198
+ licenses:
199
+ - MIT
200
+ post_install_message:
201
+ rdoc_options: []
202
+
203
+ require_paths:
204
+ - lib
205
+ required_ruby_version: !ruby/object:Gem::Requirement
206
+ none: false
207
+ requirements:
208
+ - - ">="
209
+ - !ruby/object:Gem::Version
210
+ hash: 3
211
+ segments:
212
+ - 0
213
+ version: "0"
214
+ required_rubygems_version: !ruby/object:Gem::Requirement
215
+ none: false
216
+ requirements:
217
+ - - ">="
218
+ - !ruby/object:Gem::Version
219
+ hash: 3
220
+ segments:
221
+ - 0
222
+ version: "0"
223
+ requirements: []
224
+
225
+ rubyforge_project:
226
+ rubygems_version: 1.8.10
227
+ signing_key:
228
+ specification_version: 3
229
+ summary: Define time without dates as strings, perform operations on time spans and collection of time spans.
230
+ test_files: []
231
+