sof-cycle 0.1.17 → 0.1.18
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 +4 -4
- data/CHANGELOG.md +6 -6
- data/checksums/sof-cycle-0.1.17.gem.sha512 +1 -0
- data/lib/sof/cycle/version.rb +1 -1
- data/lib/sof/cycle.rb +19 -0
- data/lib/sof/cycles/dormant.rb +6 -0
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 735c721cc8acf74603c4bea6a29c9e5149f68fa94455dd6ea15a48ecebb6602a
|
|
4
|
+
data.tar.gz: 5061cac902fee01a91d225f7ac85774a3b16269ece1a576c317a9a5f78ec4204
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 85940a5323238358158ec9dc9a9a45218563aab918471fcc6c1bcc0322ae67a070ef743cdf6cc5210adda942be61606c951c8ce12ffb85f51105f6d9f9c34d3a
|
|
7
|
+
data.tar.gz: 8e564766036e7e95321c3c86cbc57a65d3e316dfa1cb00e76007884525b3afc4defb4bb8ce0cc95e004031af4c56b892da99b7f62c01a31911c9e722d60ad001
|
data/CHANGELOG.md
CHANGED
|
@@ -5,14 +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.
|
|
8
|
+
## [0.1.18] - 2026-10-22
|
|
9
9
|
|
|
10
|
-
###
|
|
10
|
+
### Added
|
|
11
11
|
|
|
12
|
-
- `Cycle#
|
|
12
|
+
- `Cycle#in_force_by(dates)` anchors a dormant End-of or Interval cycle on the latest date once the dates meet its volume, then resets it by them
|
|
13
13
|
|
|
14
|
-
## [0.1.
|
|
14
|
+
## [0.1.17] - 2026-10-20
|
|
15
15
|
|
|
16
|
-
###
|
|
16
|
+
### Changed
|
|
17
17
|
|
|
18
|
-
- `Cycle#
|
|
18
|
+
- `Cycle#reset_by` re-anchors the window on the date that meets the cycle's volume, and later dates count toward the new window
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
79734e3566bc1e21c2e6399531ec538e9207aa5e7426103cf126f36c2f020a04b618b83ceaf1ece2b12506c6d353e2c1f7e359e0bd3216ccf33e214b916b7f1d
|
data/lib/sof/cycle/version.rb
CHANGED
data/lib/sof/cycle.rb
CHANGED
|
@@ -346,6 +346,25 @@ module SOF
|
|
|
346
346
|
Cycle.for(activated_notation(date))
|
|
347
347
|
end
|
|
348
348
|
|
|
349
|
+
# The cycle in force given the dates that satisfy it: a dormant E or I
|
|
350
|
+
# cycle anchors on the latest date once they meet its volume, then
|
|
351
|
+
# `reset_by` moves it.
|
|
352
|
+
#
|
|
353
|
+
# @param dates [Array<Date, Time, nil>] the acts that satisfy this cycle
|
|
354
|
+
# @return [Cycle] the cycle in force, or self when nothing brings it in
|
|
355
|
+
#
|
|
356
|
+
# @example
|
|
357
|
+
# Cycle.for("V2E12M").in_force_by([Date.new(2026, 3, 20), Date.new(2026, 5, 2)])
|
|
358
|
+
# # => Cycle.for("V2E12MF2026-05-02")
|
|
359
|
+
def in_force_by(dates)
|
|
360
|
+
return self unless recurring? && dormant_capable?
|
|
361
|
+
|
|
362
|
+
days = Array(dates).filter_map { it&.to_date }
|
|
363
|
+
return self if from_date.nil? && days.size < volume
|
|
364
|
+
|
|
365
|
+
activated_by(days.max).reset_by(days)
|
|
366
|
+
end
|
|
367
|
+
|
|
349
368
|
# From the supplied anchor date, are there enough in-window completions to
|
|
350
369
|
# satisfy the cycle?
|
|
351
370
|
#
|
data/lib/sof/cycles/dormant.rb
CHANGED
|
@@ -26,6 +26,12 @@ module SOF
|
|
|
26
26
|
# activated, not by the acts that satisfy it.
|
|
27
27
|
def reset_by(...) = self
|
|
28
28
|
|
|
29
|
+
# Short of the volume it stays the wrapper, not the bare cycle.
|
|
30
|
+
def in_force_by(dates)
|
|
31
|
+
in_force = cycle.in_force_by(dates)
|
|
32
|
+
in_force.active? ? in_force : self
|
|
33
|
+
end
|
|
34
|
+
|
|
29
35
|
def expiration_of(...) = nil
|
|
30
36
|
|
|
31
37
|
def satisfied_by?(...) = false
|
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.
|
|
4
|
+
version: 0.1.18
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jim Gay
|
|
@@ -59,6 +59,7 @@ files:
|
|
|
59
59
|
- checksums/sof-cycle-0.1.14.gem.sha512
|
|
60
60
|
- checksums/sof-cycle-0.1.15.gem.sha512
|
|
61
61
|
- checksums/sof-cycle-0.1.16.gem.sha512
|
|
62
|
+
- checksums/sof-cycle-0.1.17.gem.sha512
|
|
62
63
|
- checksums/sof-cycle-0.1.2.gem.sha512
|
|
63
64
|
- checksums/sof-cycle-0.1.3.gem.sha512
|
|
64
65
|
- checksums/sof-cycle-0.1.4.gem.sha512
|