fugit 1.3.0 → 1.3.1
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 +8 -0
- data/CREDITS.md +1 -1
- data/lib/fugit.rb +1 -1
- data/lib/fugit/cron.rb +44 -4
- data/lib/fugit/nat.rb +15 -8
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b6c020a2dc2dea8ee73eae196c502e1353839f84
|
|
4
|
+
data.tar.gz: d4d43e932e0e4de4d07d402db975bf2a642df687
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7c7f5319195ca991c848826b336023f429fc21ad033b26d67b7011872b91d1e9f8fb639b2618eda9dd1e199d7e473599e356924f302bb5cbaba20817aa6ab050
|
|
7
|
+
data.tar.gz: 4358df79feebbdb50509b78735fad8210d5c3d001d6a0b3d5a85aa375be08605816ea87510abc8188b5e42d091cd4d47af91a18061d956dc10a115fd9397c7eb
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
# CHANGELOG.md
|
|
3
3
|
|
|
4
4
|
|
|
5
|
+
## fugit 1.3.1 released 2019-07-27
|
|
6
|
+
|
|
7
|
+
* Fix nat parsing for 'every day at 18:00 and 18:15', gh-29
|
|
8
|
+
* and for 'every day at 18:00, 18:15, 20:00, and 20:15', gh-29
|
|
9
|
+
* Ensure multi: :fail doesn't force into multi, gh-28
|
|
10
|
+
* Fix nat parsing for 'every Fri-Sun at 18:00', gh-27
|
|
11
|
+
|
|
12
|
+
|
|
5
13
|
## fugit 1.3.0 released 2019-07-21
|
|
6
14
|
|
|
7
15
|
* Introduce Fugit.parse_nat('every day at 18:00 and 19:15', multi: true)
|
data/CREDITS.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
# fugit credits
|
|
3
3
|
|
|
4
|
-
* Shai Coleman https://github.com/shaicoleman parse_nat enhancements, gh-24 and gh-
|
|
4
|
+
* Shai Coleman https://github.com/shaicoleman parse_nat enhancements, gh-24, gh-25, and gh-28
|
|
5
5
|
* Jan Stevens https://github.com/JanStevens Fugit.parse('every 15 minutes') gh-22
|
|
6
6
|
* Fabio Pitino https://github.com/hspazio nil on February 30 gh-21
|
|
7
7
|
* Cristian Oneț https://github.com/conet #previous_time vs 1/-1 endless loop gh-15
|
data/lib/fugit.rb
CHANGED
data/lib/fugit/cron.rb
CHANGED
|
@@ -475,9 +475,45 @@ module Fugit
|
|
|
475
475
|
sla = 1 if sla == nil
|
|
476
476
|
sta = min if sta == nil
|
|
477
477
|
edn = max if edn == nil
|
|
478
|
-
sta, edn = edn, sta if sta > edn
|
|
479
478
|
|
|
480
|
-
(sta
|
|
479
|
+
range(min, max, sta, edn, sla)
|
|
480
|
+
end
|
|
481
|
+
|
|
482
|
+
def range(min, max, sta, edn, sla)
|
|
483
|
+
|
|
484
|
+
fail ArgumentError.new(
|
|
485
|
+
'both start and end must be negative in ' +
|
|
486
|
+
{ min: min, max: max, sta: sta, edn: edn, sla: sla }.inspect
|
|
487
|
+
) if (sta < 0 && edn > 0) || (edn < 0 && sta > 0)
|
|
488
|
+
|
|
489
|
+
#p({ min: min, max: max, sta: sta, edn: edn, sla: sla })
|
|
490
|
+
a = []
|
|
491
|
+
|
|
492
|
+
omin, omax = min, max
|
|
493
|
+
min, max = -max, -1 if sta < 0
|
|
494
|
+
#p({ min: min, max: max })
|
|
495
|
+
|
|
496
|
+
cur = sta
|
|
497
|
+
|
|
498
|
+
loop do
|
|
499
|
+
|
|
500
|
+
#p({ cur: cur })
|
|
501
|
+
a << cur
|
|
502
|
+
break if cur == edn
|
|
503
|
+
|
|
504
|
+
cur += 1
|
|
505
|
+
cur = min if cur > max
|
|
506
|
+
#p cur
|
|
507
|
+
|
|
508
|
+
fail RuntimeError.new(
|
|
509
|
+
"too many loops for " +
|
|
510
|
+
{ min: omin, max: omax, sta: sta, edn: edn, sla: sla }.inspect +
|
|
511
|
+
" #range, breaking, " +
|
|
512
|
+
"please fill an issue at https://git.io/fjJC9"
|
|
513
|
+
) if a.length > omax
|
|
514
|
+
end
|
|
515
|
+
|
|
516
|
+
a.each_with_index.select { |e, i| i % sla == 0 }.collect(&:first)
|
|
481
517
|
end
|
|
482
518
|
|
|
483
519
|
def compact(key)
|
|
@@ -529,7 +565,8 @@ module Fugit
|
|
|
529
565
|
((a || 0)..(z || (a ? a : 6))).step(sl < 1 ? 1 : sl)
|
|
530
566
|
.each { |i| @weekdays << [ i ] }
|
|
531
567
|
elsif z
|
|
532
|
-
|
|
568
|
+
z = z + 7 if a > z
|
|
569
|
+
(a..z).each { |i| @weekdays << [ (i > 6) ? i - 7 : i ] }
|
|
533
570
|
elsif a
|
|
534
571
|
@weekdays << [ a ]
|
|
535
572
|
#else
|
|
@@ -538,6 +575,7 @@ module Fugit
|
|
|
538
575
|
|
|
539
576
|
@weekdays.each { |wd| wd[0] = 0 if wd[0] == 7 } # turn sun7 into sun0
|
|
540
577
|
@weekdays.uniq!
|
|
578
|
+
@weekdays.sort!
|
|
541
579
|
@weekdays = nil if @weekdays.empty?
|
|
542
580
|
end
|
|
543
581
|
|
|
@@ -685,7 +723,9 @@ module Fugit
|
|
|
685
723
|
|
|
686
724
|
a = at ? rewrite_bound(k, at) : nil
|
|
687
725
|
z = zt ? rewrite_bound(k, zt) : nil
|
|
688
|
-
|
|
726
|
+
|
|
727
|
+
#a, z = z, a if a && z && a > z
|
|
728
|
+
# handled downstream since gh-27
|
|
689
729
|
|
|
690
730
|
[ a, z, sl, ha, mo ]
|
|
691
731
|
end
|
data/lib/fugit/nat.rb
CHANGED
|
@@ -37,13 +37,16 @@ module Fugit
|
|
|
37
37
|
|
|
38
38
|
def parse_crons(s, a, opts)
|
|
39
39
|
|
|
40
|
-
dhs, aa =
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
dhs, aa = a
|
|
41
|
+
.partition { |e| e[0] == :digital_hour }
|
|
42
|
+
ms = dhs
|
|
43
|
+
.inject({}) { |h, dh| (h[dh[1][0]] ||= []) << dh[1][1]; h }
|
|
44
|
+
.values
|
|
45
|
+
.uniq
|
|
44
46
|
|
|
45
47
|
crons =
|
|
46
|
-
if
|
|
48
|
+
#if ms.size <= 1 || hs.size <= 1
|
|
49
|
+
if ms.size <= 1
|
|
47
50
|
[ parse_cron(a, opts) ]
|
|
48
51
|
else
|
|
49
52
|
dhs.collect { |dh| parse_cron([ dh ] + aa, opts) }
|
|
@@ -54,7 +57,7 @@ module Fugit
|
|
|
54
57
|
"(#{crons.collect(&:original).join(' | ')})"
|
|
55
58
|
) if opts[:multi] == :fail && crons.size > 1
|
|
56
59
|
|
|
57
|
-
if opts[:multi]
|
|
60
|
+
if opts[:multi] == true || (opts[:multi] && opts[:multi] != :fail)
|
|
58
61
|
crons
|
|
59
62
|
else
|
|
60
63
|
crons.first
|
|
@@ -84,9 +87,13 @@ module Fugit
|
|
|
84
87
|
process_duration(h, *val[0].to_h.first)
|
|
85
88
|
end
|
|
86
89
|
end
|
|
90
|
+
|
|
87
91
|
h[:min] ||= [ 0 ]
|
|
88
92
|
h[:min].uniq!
|
|
89
|
-
|
|
93
|
+
|
|
94
|
+
h[:hou].uniq!;
|
|
95
|
+
h[:hou].sort!
|
|
96
|
+
|
|
90
97
|
h[:dow].sort! if h[:dow]
|
|
91
98
|
|
|
92
99
|
a = hkeys
|
|
@@ -95,9 +102,9 @@ module Fugit
|
|
|
95
102
|
(v && v.any?) ? v.collect(&:to_s).join(',') : '*' }
|
|
96
103
|
a.insert(0, h[:sec]) if h[:sec]
|
|
97
104
|
a << h[:tz].first if h[:tz]
|
|
105
|
+
|
|
98
106
|
s = a.join(' ')
|
|
99
107
|
|
|
100
|
-
#p s
|
|
101
108
|
Fugit::Cron.parse(s)
|
|
102
109
|
end
|
|
103
110
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fugit
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.3.
|
|
4
|
+
version: 1.3.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- John Mettraux
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-07-
|
|
11
|
+
date: 2019-07-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: raabro
|