timetrap 1.7.8 → 1.7.9

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 1
3
3
  :minor: 7
4
- :patch: 8
4
+ :patch: 9
@@ -14,7 +14,7 @@ module Timetrap
14
14
  time
15
15
  when String
16
16
  chronic = begin
17
- Chronic.parse(time, :now => now)
17
+ time_closest_to_now_with_chronic(time, now)
18
18
  rescue => e
19
19
  warn "#{e.class} in Chronic gem parsing time. Falling back to Time.parse"
20
20
  end
@@ -29,6 +29,13 @@ module Timetrap
29
29
  end
30
30
  end
31
31
 
32
+ def time_closest_to_now_with_chronic(time, now)
33
+ [
34
+ Chronic.parse(time, :context => :past, :now => now),
35
+ Chronic.parse(time, :context => :future, :now => now)
36
+ ].sort_by{|a| (a.to_i - now.to_i).abs }.first
37
+ end
38
+
32
39
  # Time.parse is optimistic and will parse things like '=18' into midnight
33
40
  # on 18th of this month.
34
41
  # It will also turn 'total garbage' into Time.now
@@ -1014,7 +1014,7 @@ END:VCALENDAR
1014
1014
  end
1015
1015
  end
1016
1016
 
1017
- describe "setting the end time" do
1017
+ describe "with times specfied like 12:12:12" do
1018
1018
  it "should assume a <24 hour duration" do
1019
1019
  @entry.start= Time.at(Time.now - 3600) # 1.hour.ago
1020
1020
  @entry.end = Time.at(Time.now - 300).strftime("%H:%M:%S") # ambiguous 5.minutes.ago
@@ -1023,6 +1023,15 @@ END:VCALENDAR
1023
1023
  # within this test.
1024
1024
  (3299..3301).should === @entry.duration
1025
1025
  end
1026
+
1027
+ it "should assume a start time near the current time" do
1028
+ time = Time.at(Time.now - 300)
1029
+ @entry.start= time.strftime("%H:%M:%S") # ambiguous 5.minutes.ago
1030
+
1031
+ # should be about 55 minutes duration. Allow for second rollover
1032
+ # within this test.
1033
+ @entry.start.to_i.should == time.to_i
1034
+ end
1026
1035
  end
1027
1036
  end
1028
1037
 
data/timetrap.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{timetrap}
8
- s.version = "1.7.8"
8
+ s.version = "1.7.9"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Sam Goldstein"]
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timetrap
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 7
9
- - 8
10
- version: 1.7.8
9
+ - 9
10
+ version: 1.7.9
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sam Goldstein