sof-cycle 0.1.16 → 0.1.17

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 231dc1ad6fc3d374cd70a0684f1d67206ccc7bec0335d1510b03f219a1a8fc5d
4
- data.tar.gz: f0d524a077e23d84544833cae34d8d0695817bc10f092ffc84c560371edaffa9
3
+ metadata.gz: 578b47e1063361f57d1d3eee18543b7dc16665ccbc0e5c6f7684405699a406ff
4
+ data.tar.gz: 365a22eff32c6908fcfbdbe14f6d0494c77c70c8471b9af13e0e76ce32945bf5
5
5
  SHA512:
6
- metadata.gz: 54c7a1a4f2a1960050e282ce5209c327f3b6c16b18ed9c5c1696564f7a99b30dbfbded433bf9a60a1f8ebf4ddac6d1d98b44d42413327fb7b5caf9152e6267d1
7
- data.tar.gz: 4cf103728536a77b00dadfea353f616882d095468ca5c3c02e6d838736d4ecdb0e0fb7f67da980632443eb9270ba2d4714b20e44bddd8b38189c7242af02ab6b
6
+ metadata.gz: 944184b46dc341d087db96a0173ad72de8a8524fd8984c34efd3e7b53853fefd68d0f0814cedf5818cb74492e3c69556bc90174227a3bf1001a867db7d60de37
7
+ data.tar.gz: 49f3369f577e9369ca19f3f6f3b0f37fb9ec558a9aac48e5af6ec4429e85d1561c27591b039b3263cf3531f62185829a0a03a10fe5bb565ed4f36e29206c4f10
data/CHANGELOG.md CHANGED
@@ -5,10 +5,14 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.1.17] - 2026-10-20
9
+
10
+ ### Changed
11
+
12
+ - `Cycle#reset_by` re-anchors the window on the date that meets the cycle's volume, and later dates count toward the new window
13
+
8
14
  ## [0.1.16] - 2026-10-08
9
15
 
10
16
  ### Added
11
17
 
12
18
  - `Cycle#activated_by(date)` returns the cycle anchored on that date, or itself when already active
13
-
14
- ## [0.1.15] - 2026-07-27
@@ -0,0 +1 @@
1
+ a2fb7da5b2f320e581a7473ce5e534841d7b6daff56f2bdc3023d439ea4566df96c87edd4cf116348f4cac4a16db140b1edb5b45098cee73bcd63d7cb566baf5
@@ -2,6 +2,6 @@
2
2
 
3
3
  module SOF
4
4
  class Cycle
5
- VERSION = "0.1.16"
5
+ VERSION = "0.1.17"
6
6
  end
7
7
  end
data/lib/sof/cycle.rb CHANGED
@@ -310,10 +310,12 @@ module SOF
310
310
  # consuming app.
311
311
  #
312
312
  # Dates on or before the current anchor are ignored: a back-dated act
313
- # must not drag a forward-running window backwards. Every other kind
314
- # returns itself — a lookback window already slides, a calendar window is
315
- # pinned to the calendar, a one-shot window does not repeat, and an
316
- # un-anchored one has no window to move until it is activated.
313
+ # must not drag a forward-running window backwards. The window re-anchors
314
+ # on the date that meets its volume; later dates count toward the new
315
+ # window. Every other kind returns itself — a lookback window already
316
+ # slides, a calendar window is pinned to the calendar, a one-shot window
317
+ # does not repeat, and an un-anchored one has no window to move until it
318
+ # is activated.
317
319
  #
318
320
  # @param dates [Array<Date, Time, nil>] the acts that satisfy this cycle
319
321
  # @return [Cycle] the reset cycle, or self when nothing resets it
@@ -397,10 +399,19 @@ module SOF
397
399
 
398
400
  private
399
401
 
400
- # The latest date that moves this cycle's window forward, or nil.
401
402
  def reset_date(dates)
402
- anchored_on = from_date.to_date
403
- Array(dates).filter_map { it&.to_date }.select { it > anchored_on }.max
403
+ anchor = from_date.to_date
404
+ reset = nil
405
+ counted = 0
406
+ Array(dates).filter_map { it&.to_date }.sort.each do |date|
407
+ next unless date > anchor
408
+ counted += 1
409
+ next if counted < volume
410
+
411
+ anchor = reset = date
412
+ counted = 0
413
+ end
414
+ reset
404
415
  end
405
416
  end
406
417
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sof-cycle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.16
4
+ version: 0.1.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jim Gay
@@ -58,6 +58,7 @@ files:
58
58
  - checksums/sof-cycle-0.1.13.gem.sha512
59
59
  - checksums/sof-cycle-0.1.14.gem.sha512
60
60
  - checksums/sof-cycle-0.1.15.gem.sha512
61
+ - checksums/sof-cycle-0.1.16.gem.sha512
61
62
  - checksums/sof-cycle-0.1.2.gem.sha512
62
63
  - checksums/sof-cycle-0.1.3.gem.sha512
63
64
  - checksums/sof-cycle-0.1.4.gem.sha512