easy_timer 0.9.3 → 0.9.4

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.
@@ -11,25 +11,32 @@ module EasyTimer
11
11
  yield
12
12
  total_time = Time.at(Time.now - start_time)
13
13
  if options[:verbose] || options[:v]
14
- return total_time.verbose
14
+ return total_time.verbose
15
15
  else
16
16
  return total_time
17
17
  end
18
18
  end
19
19
  end
20
20
 
21
- def verbose(options = {:msec => true})
21
+ def verbose
22
22
  time_hash = {}
23
23
  seconds = self.to_i
24
+
25
+ precision = case seconds
26
+ when 0..30 then 3
27
+ when 31..360 then 2
28
+ else 0
29
+ end
30
+
24
31
  time_hash[:week], seconds = seconds.divmod(604800)
25
32
  time_hash[:day], seconds = seconds.divmod(86400)
26
33
  time_hash[:hour], seconds = seconds.divmod(3600)
27
34
  time_hash[:minute], seconds = seconds.divmod(60)
28
35
  time_hash[:second] = seconds
29
- time_hash[:second] += (self.to_f - self.to_i) if options[:msec]
36
+ time_hash[:second] += (self.to_f - self.to_i) if precision > 0
30
37
  return time_hash.select{|k,v| v > 0}.inject([]) do |verbose, array|
31
38
  k, v = array
32
- verbose << "#{v.is_a?(Float) ? sprintf("%.2f", v) : v} #{k.to_s + (v == 1 ? '' : 's')}"
39
+ verbose << "#{v.is_a?(Float) ? sprintf("%.#{precision}f", v) : v} #{k.to_s + (v == 1 ? '' : 's')}"
33
40
  end.join(" ")
34
41
  end
35
42
  end
@@ -1,3 +1,3 @@
1
1
  module EasyTimer
2
- VERSION = "0.9.3"
2
+ VERSION = "0.9.4"
3
3
  end
@@ -7,28 +7,36 @@ describe "timer instance" do
7
7
  end
8
8
 
9
9
  it "should be a singular verbose time" do
10
- expect(verbose_time).to eql "1 week 1 day 1 hour 1 minute 1.11 seconds"
10
+ expect(verbose_time).to eql "1 week 1 day 1 hour 1 minute 1 second"
11
11
  end
12
12
 
13
- it "shold be a plural verbose time" do
14
- expect(Time.at(1389722.22).verbose).to eql "2 weeks 2 days 2 hours 2 minutes 2.22 seconds"
13
+ it "should be a plural verbose time" do
14
+ expect(Time.at(1389722.22).verbose).to eql "2 weeks 2 days 2 hours 2 minutes 2 seconds"
15
15
  end
16
16
 
17
- it "should show 0.55 seconds" do
18
- expect(Time.timer{sleep 0.55}.verbose).to eql "0.55 seconds"
17
+ it "should display 3 decimal places" do
18
+ expect(Time.at(22.222).verbose).to eql "22.222 seconds"
19
+ end
20
+
21
+ it "should display 2 decimal places" do
22
+ expect(Time.at(60.222).verbose).to eql "1 minute 0.22 seconds"
23
+ end
24
+
25
+ it "should display no decimal places" do
26
+ expect(Time.at(361.222).verbose).to eql "6 minutes 1 second"
19
27
  end
20
28
  end
21
29
 
22
30
  describe "Timer" do
23
31
  before :all do
24
- @five = Time.timer{sleep 5}
32
+ @five = Time.timer{sleep 2}
25
33
  end
26
34
 
27
35
  it "should return a Time object" do
28
36
  expect(@five.class).to eql Time
29
37
  end
30
38
 
31
- it "should return 5 seconds" do
32
- expect(@five.to_f).to be_within(0.1).of(5)
39
+ it "should return 2 seconds" do
40
+ expect(@five.to_f).to be_within(0.1).of(2)
33
41
  end
34
42
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy_timer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.3
4
+ version: 0.9.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-01 00:00:00.000000000 Z
12
+ date: 2012-10-12 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Easy Timer
15
15
  email: