timeouter 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9f10b6b4a402f7a2eda65f18f71e14bcf5745616a81f7793b9051a1dd3b09501
4
- data.tar.gz: 916cb40b55973b7343abdb134ce16f2068828f5dee28a4c9205290b767046ea9
3
+ metadata.gz: 4eebc16a3cd094d67214eba8d29e32c94b9e3c8c553d063fe6df190dac55f75b
4
+ data.tar.gz: 9ac2cf769c9345afcf99bda5dbe2f2a5d299d1ac1eaa05bfa43643dffb18df8c
5
5
  SHA512:
6
- metadata.gz: 716982b408f28ff28d656917e6085c4731a9b57ac3238673997399285315311e96d3ddc2f48c6077f7a61de08808a561a0dc2b264ed184cbe28f48be30e42873
7
- data.tar.gz: b89ee00299bf83fb6a7bfb269eff51727e24288346acae5f22dfb9630ad3c3a16576b71c2159e80acfbff8f13696741b206088007192998a40004886aa113de9
6
+ metadata.gz: b1dcb98874efc98cc29cff7a8c3cd04a2746c7e74cbd00f42cc29b638b908bdd57e4e8967858083dcb86b57a09b1cfce67042776f425a66393f7ed4bf07df440
7
+ data.tar.gz: ccb5256cadaac18f390441fa5a8bee9223b628f77646774300ebc3e251d298978e148b8660f28a9c0a98dbf6ce30863654c511b3f413be17884f0fdc1cdff71c
@@ -3,18 +3,17 @@ require 'timeout'
3
3
  module Timeouter
4
4
  class Timer
5
5
 
6
- attr_reader :started_at, :exhausted_at
6
+ attr_reader :timeout, :started_at#, :exhausted_at
7
7
 
8
- def initialize(timeout = 0, eclass: Timeouter::TimeoutError, emessage: 'execution expired')
8
+ def initialize(timeout = 0, eclass: nil, message: nil)
9
9
  # ensure only positive timeouts
10
10
  timeout ||= 0
11
- timeout = [timeout, 0].max
11
+ @timeout = [timeout, 0].max
12
12
 
13
- @eclass = eclass
14
- @emessage = emessage
13
+ @eclass = eclass || Timeouter::TimeoutError
14
+ @message = message || 'execution expired'
15
15
 
16
16
  @started_at = Time.now
17
- @exhausted_at = timeout > 0 ? @started_at + timeout : nil
18
17
  end
19
18
 
20
19
  # elapsed time from creation
@@ -24,12 +23,12 @@ module Timeouter
24
23
 
25
24
  # time left to be exhausted or nil if timeout was 0
26
25
  def left
27
- @exhausted_at && [@exhausted_at - Time.now, 0].max
26
+ (@timeout > 0) ? [@timeout - elapsed, 0].max : nil
28
27
  end
29
28
 
30
29
  # is timeout exhausted? or nil when timeout was 0
31
30
  def exhausted?
32
- @exhausted_at && (@exhausted_at < Time.now)
31
+ (@timeout > 0) ? elapsed > @timeout : nil
33
32
  end
34
33
 
35
34
  # is timeout NOT exhausted? or true when timeout was 0
@@ -38,7 +37,7 @@ module Timeouter
38
37
  end
39
38
 
40
39
  # ensure timeout NOT exhausted raise exception otherwise
41
- def running!(eclass = @eclass, message: @emessage)
40
+ def running!(eclass = @eclass, message: @message)
42
41
  !exhausted? || (raise eclass.new(message))
43
42
  end
44
43
 
@@ -47,7 +46,7 @@ module Timeouter
47
46
  yield(self) while self.running?
48
47
  end
49
48
 
50
- def loop!(eclass = @eclass, message: @emessage)
49
+ def loop!(eclass = @eclass, message: @message)
51
50
  yield(self) while self.running!(eclass, message: message)
52
51
  end
53
52
 
@@ -1,6 +1,6 @@
1
1
  module Timeouter
2
2
 
3
- VERSION = '0.1.0'.freeze
3
+ VERSION = '0.1.1'.freeze
4
4
 
5
5
  end
6
6
 
data/lib/timeouter.rb CHANGED
@@ -1,4 +1,4 @@
1
- require_relative 'timeouter/timer'
1
+ require 'timeouter/timer'
2
2
 
3
3
 
4
4
  module Timeouter
@@ -7,16 +7,16 @@ module Timeouter
7
7
 
8
8
  class << self
9
9
 
10
- def run(timeout = 0, eclass: Timeouter::TimeoutError, emessage: 'execution expired')
11
- yield(Timeouter::Timer.new(timeout, eclass: eclass, emessage: emessage))
10
+ def run(timeout = 0, eclass: Timeouter::TimeoutError, message: 'execution expired')
11
+ yield(Timeouter::Timer.new(timeout, eclass: eclass, message: message))
12
12
  end
13
13
 
14
- def loop(timeout = 0, eclass: Timeouter::TimeoutError, emessage: 'execution expired', &block)
15
- Timeouter::Timer.new(timeout, eclass: eclass, emessage: emessage).loop(&block)
14
+ def loop(timeout = 0, eclass: Timeouter::TimeoutError, message: 'execution expired', &block)
15
+ Timeouter::Timer.new(timeout, eclass: eclass, message: message).loop(&block)
16
16
  end
17
17
 
18
- def loop!(timeout = 0, eclass: Timeouter::TimeoutError, emessage: 'execution expired', &block)
19
- Timeouter::Timer.new(timeout, eclass: eclass, emessage: emessage).loop!(&block)
18
+ def loop!(timeout = 0, eclass: Timeouter::TimeoutError, message: 'execution expired', &block)
19
+ Timeouter::Timer.new(timeout, eclass: eclass, message: message).loop!(&block)
20
20
  end
21
21
 
22
22
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timeouter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samoilenko Yuri
@@ -59,7 +59,7 @@ dependencies:
59
59
  - !ruby/object:Gem::Version
60
60
  version: '0'
61
61
  - !ruby/object:Gem::Dependency
62
- name: rubocop
62
+ name: rspec_junit_formatter
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - ">="
@@ -73,7 +73,7 @@ dependencies:
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
75
  - !ruby/object:Gem::Dependency
76
- name: webmock
76
+ name: simplecov
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - ">="
@@ -86,7 +86,21 @@ dependencies:
86
86
  - - ">="
87
87
  - !ruby/object:Gem::Version
88
88
  version: '0'
89
- description: Timeouter is advisory timeout helper
89
+ - !ruby/object:Gem::Dependency
90
+ name: simplecov-console
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ description: Timeouter is advisory timeout helper without any background threads.
90
104
  email:
91
105
  - kinnalru@gmail.com
92
106
  executables: []
@@ -116,9 +130,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
130
  - !ruby/object:Gem::Version
117
131
  version: '0'
118
132
  requirements: []
119
- rubyforge_project:
120
- rubygems_version: 2.7.9
133
+ rubygems_version: 3.0.3
121
134
  signing_key:
122
135
  specification_version: 4
123
- summary: Timeouter is advisory timeout helper
136
+ summary: Timeouter is advisory timeout helper without any background threads.
124
137
  test_files: []