timers 4.3.5 → 4.4.0

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: e7c61c9db77955d85c69ca83499add3629c71628af3a825d78978b2383182b4a
4
- data.tar.gz: 27f570753d83d4b4a98ee6ede089908d571347df8ba411edb56fe4ae965e703c
3
+ metadata.gz: '07298120c1d45f17c3494b356f3a7415da25406804f33d58fa8f2cfe430ca1c1'
4
+ data.tar.gz: '09d40256b9e64b66fcee87a2e8222f062a0fd600b3845ba9e0675e21c09e323c'
5
5
  SHA512:
6
- metadata.gz: a7bac196cc0e3e1a784f7ba961c4a09539c875f80ac366da0b0d091d9f6ad1a505fb0a86a0c9d61d44a3495342029d003749b3ac072904b37f667d8e6e90b356
7
- data.tar.gz: 4fa05113f72aef3abe63804a097e7fd9322c5b84a2a9ad14d590906e3ca59754857378a085388c52f9eb7ef1beb934b6b75789c3c087eee0b900f3446ace7207
6
+ metadata.gz: bd660f745409c852fa6756983cb460e58143bda880332230669e9f49bdb197b7ea5593563f5526ee0d36c56f1aa89673afe14df27f0eda58f1c7a8fadd9b8947
7
+ data.tar.gz: ff2f6672fa7a6d8c561cd0933bd796b406d98fbc0250600abc4a04779be917f3ddf1205795b0b6455bde09d89ae224c25f3b37349cef5fbdf810ea6a9ec650d9
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/timers/group.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2014-2022, by Samuel Williams.
4
+ # Copyright, 2014-2025, by Samuel Williams.
5
5
  # Copyright, 2014-2016, by Tony Arcieri.
6
6
  # Copyright, 2015, by Donovan Keme.
7
7
  # Copyright, 2015, by Tommy Ong Gia Phu.
@@ -92,8 +92,9 @@ module Timers
92
92
  # - 0: timers ready to fire
93
93
  # - +ve: timers waiting to fire
94
94
  def wait_interval(offset = current_offset)
95
- handle = @events.first
96
- handle.time - Float(offset) if handle
95
+ if handle = @events.first
96
+ handle.time - Float(offset)
97
+ end
97
98
  end
98
99
 
99
100
  # Fire all timers that are ready.
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Released under the MIT License.
4
4
  # Copyright, 2021, by Wander Hillen.
5
- # Copyright, 2021-2022, by Samuel Williams.
5
+ # Copyright, 2021-2025, by Samuel Williams.
6
6
 
7
7
  module Timers
8
8
  # A priority queue implementation using a standard binary minheap. It uses straight comparison
@@ -84,9 +84,10 @@ module Timers
84
84
 
85
85
  private
86
86
 
87
- def swap(i, j)
88
- @contents[i], @contents[j] = @contents[j], @contents[i]
89
- end
87
+ # Left here for reference, but unused.
88
+ # def swap(i, j)
89
+ # @contents[i], @contents[j] = @contents[j], @contents[i]
90
+ # end
90
91
 
91
92
  def bubble_up(index)
92
93
  parent_index = (index - 1) / 2 # watch out, integer division!
data/lib/timers/timer.rb CHANGED
@@ -1,11 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2014-2022, by Samuel Williams.
4
+ # Copyright, 2014-2025, by Samuel Williams.
5
5
  # Copyright, 2014-2017, by Tony Arcieri.
6
6
  # Copyright, 2014, by Utenmiki.
7
7
  # Copyright, 2014, by Lin Jen-Shin.
8
8
  # Copyright, 2017, by Vít Ondruch.
9
+ # Copyright, 2025, by Patrik Wenger.
9
10
 
10
11
  module Timers
11
12
  # An individual timer set to fire a given proc at a given time. A timer is
@@ -23,12 +24,11 @@ module Timers
23
24
  @interval = interval
24
25
  @recurring = recurring
25
26
  @block = block
26
- @offset = offset
27
-
27
+ @offset = nil
28
28
  @handle = nil
29
29
 
30
30
  # If a start offset was supplied, use that, otherwise use the current timers offset.
31
- reset(@offset || @group.current_offset)
31
+ reset(offset || @group.current_offset)
32
32
  end
33
33
 
34
34
  def paused?
@@ -73,7 +73,7 @@ module Timers
73
73
  @handle = nil
74
74
 
75
75
  # This timer is no longer valid:
76
- @group.timers.delete self if @group
76
+ @group.timers.delete(self) if @group
77
77
  end
78
78
 
79
79
  # Reset this timer. Do not call while paused.
@@ -103,9 +103,9 @@ module Timers
103
103
  @offset = offset
104
104
  end
105
105
 
106
- @block.call(offset, self)
107
-
106
+ result = @block.call(offset, self)
108
107
  cancel unless recurring
108
+ result
109
109
  end
110
110
 
111
111
  alias call fire
@@ -117,18 +117,18 @@ module Timers
117
117
 
118
118
  # Inspect a timer
119
119
  def inspect
120
- buffer = "#{to_s[0..-2]} ".dup
120
+ buffer = to_s[0..-2]
121
121
 
122
122
  if @offset
123
- if fires_in >= 0
124
- buffer << "fires in #{fires_in} seconds"
123
+ delta_offset = @offset - @group.current_offset
124
+
125
+ if delta_offset > 0
126
+ buffer << " fires in #{delta_offset} seconds"
125
127
  else
126
- buffer << "fired #{fires_in.abs} seconds ago"
128
+ buffer << " fired #{delta_offset.abs} seconds ago"
127
129
  end
128
130
 
129
131
  buffer << ", recurs every #{interval}" if recurring
130
- else
131
- buffer << "dead"
132
132
  end
133
133
 
134
134
  buffer << ">"
@@ -6,5 +6,5 @@
6
6
  # Copyright, 2015, by Donovan Keme.
7
7
 
8
8
  module Timers
9
- VERSION = "4.3.5"
9
+ VERSION = "4.4.0"
10
10
  end
data/lib/timers/wait.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2014-2022, by Samuel Williams.
4
+ # Copyright, 2014-2025, by Samuel Williams.
5
5
  # Copyright, 2014-2016, by Tony Arcieri.
6
6
  # Copyright, 2015, by Utenmiki.
7
7
  # Copyright, 2015, by Donovan Keme.
@@ -17,6 +17,7 @@ module Timers
17
17
 
18
18
  timeout.while_time_remaining(&block)
19
19
  else
20
+ # If there is no "duration" to wait for, we wait forever.
20
21
  loop do
21
22
  yield(nil)
22
23
  end
data/license.md CHANGED
@@ -12,7 +12,7 @@ Copyright, 2013-2015, by Utenmiki.
12
12
  Copyright, 2013, by Jeremy Hinegardner.
13
13
  Copyright, 2014, by Larry Lv.
14
14
  Copyright, 2014, by Bruno Enten.
15
- Copyright, 2014-2022, by Samuel Williams.
15
+ Copyright, 2014-2025, by Samuel Williams.
16
16
  Copyright, 2014, by Mike Bourgeous.
17
17
  Copyright, 2014, by Klaus Trainer.
18
18
  Copyright, 2014, by Lin Jen-Shin.
@@ -20,14 +20,15 @@ Copyright, 2014, by Lavir the Whiolet.
20
20
  Copyright, 2015-2016, by Donovan Keme.
21
21
  Copyright, 2015, by Tommy Ong Gia Phu.
22
22
  Copyright, 2015, by Will Jessop.
23
- Copyright, 2016, by Ryunosuke SATO.
23
+ Copyright, 2016, by Ryunosuke Sato.
24
24
  Copyright, 2016, by Atul Bhosale.
25
- Copyright, 2016, by Feram.
26
25
  Copyright, 2017, by Vít Ondruch.
27
26
  Copyright, 2017-2020, by Olle Jonsson.
28
27
  Copyright, 2020, by Tim Smith.
29
28
  Copyright, 2021, by Wander Hillen.
30
29
  Copyright, 2022, by Yoshiki Takagi.
30
+ Copyright, 2023, by Peter Goldstein.
31
+ Copyright, 2025, by Patrik Wenger.
31
32
 
32
33
  Permission is hereby granted, free of charge, to any person obtaining a copy
33
34
  of this software and associated documentation files (the "Software"), to deal
data/readme.md CHANGED
@@ -103,8 +103,18 @@ timers.resume
103
103
 
104
104
  ## Contributing
105
105
 
106
- 1. Fork it
107
- 2. Create your feature branch (`git checkout -b my-new-feature`)
108
- 3. Commit your changes (`git commit -am 'Add some feature'`)
109
- 4. Push to the branch (`git push origin my-new-feature`)
110
- 5. Create new Pull Request
106
+ We welcome contributions to this project.
107
+
108
+ 1. Fork it.
109
+ 2. Create your feature branch (`git checkout -b my-new-feature`).
110
+ 3. Commit your changes (`git commit -am 'Add some feature'`).
111
+ 4. Push to the branch (`git push origin my-new-feature`).
112
+ 5. Create new Pull Request.
113
+
114
+ ### Developer Certificate of Origin
115
+
116
+ In order to protect users of this project, we require all contributors to comply with the [Developer Certificate of Origin](https://developercertificate.org/). This ensures that all contributions are properly licensed and attributed.
117
+
118
+ ### Community Guidelines
119
+
120
+ This project is best served by a collaborative and respectful environment. Treat each other professionally, respect differing viewpoints, and engage constructively. Harassment, discrimination, or harmful behavior is not tolerated. Communicate clearly, listen actively, and support one another. If any issues arise, please inform the project maintainers.
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,41 +1,38 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timers
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.3.5
4
+ version: 4.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tony Arcieri
8
8
  - Samuel Williams
9
- - "//de"
9
+ - Donovan Keme
10
10
  - Wander Hillen
11
+ - Utenmiki
11
12
  - Jeremy Hinegardner
12
- - skinnyjames
13
+ - Sean Gregory
13
14
  - Chuck Remes
14
- - utenmiki
15
15
  - Olle Jonsson
16
- - deadprogrammer
17
- - takiy33
16
+ - Ron Evans
17
+ - Tommy Ong Gia Phu
18
18
  - Larry Lv
19
19
  - Lin Jen-Shin
20
- - Ryunosuke SATO
21
- - Tommy Ong Gia Phu
20
+ - Ryunosuke Sato
22
21
  - Atul Bhosale
23
22
  - Bruno Enten
24
23
  - Dimitrij Denissenko
25
- - Donovan Keme
26
- - Feram
27
24
  - Jesse Cooke
28
25
  - Klaus Trainer
29
26
  - Lavir the Whiolet
30
27
  - Mike Bourgeous
28
+ - Nicholas Evans
29
+ - Patrik Wenger
30
+ - Peter Goldstein
31
31
  - Ryan LeCompte
32
32
  - Tim Smith
33
33
  - Vít Ondruch
34
34
  - Will Jessop
35
35
  - Yoshiki Takagi
36
- - nicholas a. evans
37
- - tommyogp
38
- autorequire:
39
36
  bindir: bin
40
37
  cert_chain:
41
38
  - |
@@ -67,80 +64,8 @@ cert_chain:
67
64
  Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
68
65
  voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
69
66
  -----END CERTIFICATE-----
70
- date: 2022-10-12 00:00:00.000000000 Z
71
- dependencies:
72
- - !ruby/object:Gem::Dependency
73
- name: bundler
74
- requirement: !ruby/object:Gem::Requirement
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: '0'
79
- type: :development
80
- prerelease: false
81
- version_requirements: !ruby/object:Gem::Requirement
82
- requirements:
83
- - - ">="
84
- - !ruby/object:Gem::Version
85
- version: '0'
86
- - !ruby/object:Gem::Dependency
87
- name: covered
88
- requirement: !ruby/object:Gem::Requirement
89
- requirements:
90
- - - ">="
91
- - !ruby/object:Gem::Version
92
- version: '0'
93
- type: :development
94
- prerelease: false
95
- version_requirements: !ruby/object:Gem::Requirement
96
- requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- version: '0'
100
- - !ruby/object:Gem::Dependency
101
- name: bake-test
102
- requirement: !ruby/object:Gem::Requirement
103
- requirements:
104
- - - "~>"
105
- - !ruby/object:Gem::Version
106
- version: '0.1'
107
- type: :development
108
- prerelease: false
109
- version_requirements: !ruby/object:Gem::Requirement
110
- requirements:
111
- - - "~>"
112
- - !ruby/object:Gem::Version
113
- version: '0.1'
114
- - !ruby/object:Gem::Dependency
115
- name: bake-test-external
116
- requirement: !ruby/object:Gem::Requirement
117
- requirements:
118
- - - "~>"
119
- - !ruby/object:Gem::Version
120
- version: '0.2'
121
- type: :development
122
- prerelease: false
123
- version_requirements: !ruby/object:Gem::Requirement
124
- requirements:
125
- - - "~>"
126
- - !ruby/object:Gem::Version
127
- version: '0.2'
128
- - !ruby/object:Gem::Dependency
129
- name: sus
130
- requirement: !ruby/object:Gem::Requirement
131
- requirements:
132
- - - "~>"
133
- - !ruby/object:Gem::Version
134
- version: '0.13'
135
- type: :development
136
- prerelease: false
137
- version_requirements: !ruby/object:Gem::Requirement
138
- requirements:
139
- - - "~>"
140
- - !ruby/object:Gem::Version
141
- version: '0.13'
142
- description:
143
- email:
67
+ date: 2025-02-07 00:00:00.000000000 Z
68
+ dependencies: []
144
69
  executables: []
145
70
  extensions: []
146
71
  extra_rdoc_files: []
@@ -158,8 +83,8 @@ files:
158
83
  homepage: https://github.com/socketry/timers
159
84
  licenses:
160
85
  - MIT
161
- metadata: {}
162
- post_install_message:
86
+ metadata:
87
+ source_code_uri: https://github.com/socketry/timers.git
163
88
  rdoc_options: []
164
89
  require_paths:
165
90
  - lib
@@ -167,15 +92,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
167
92
  requirements:
168
93
  - - ">="
169
94
  - !ruby/object:Gem::Version
170
- version: '0'
95
+ version: '3.1'
171
96
  required_rubygems_version: !ruby/object:Gem::Requirement
172
97
  requirements:
173
98
  - - ">="
174
99
  - !ruby/object:Gem::Version
175
100
  version: '0'
176
101
  requirements: []
177
- rubygems_version: 3.3.7
178
- signing_key:
102
+ rubygems_version: 3.6.2
179
103
  specification_version: 4
180
104
  summary: Pure Ruby one-shot and periodic timers.
181
105
  test_files: []
metadata.gz.sig CHANGED
Binary file