cron_format 0.4.0 → 0.5.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
- SHA1:
3
- metadata.gz: 16b339c6d41735353e8cf1268fd8faf1bef76e8c
4
- data.tar.gz: bdf4d4506b8234269bc979096a8cb58545758255
2
+ SHA256:
3
+ metadata.gz: 5ae188fa6fbdd52dfef8995dc0b9b1f164d036bd77e9a15c5e30e9acc5ae8575
4
+ data.tar.gz: 362ebbce43c0f775441efb0106a611b175cae5ecceccd803ebc8b583b92ae408
5
5
  SHA512:
6
- metadata.gz: 8fd195d79177cdf7295dd15c35179b458914e0f6785999ce554bfc169dfb98dce90b155b5acce4a669662f56a10b026fba31ba31c0af6fdbcbbce30ea7b77365
7
- data.tar.gz: 51e59d602b155bafa33692277762010bf21f563591a9d6fec6dc0fa4b3ef7e286f24e1a3ee8e1ba63a138d63f5fd92845b36612d9b5a8c1db6b4a724b82bd186
6
+ metadata.gz: 48cb5f44186323f31f2ed2d3cec40a0031955c4de6bd1a66cc19fb5ef05f30d3e6059f2788e786c75f3dffc9e1f088ae6253a87c7a333a3dd618f654d261dcb5
7
+ data.tar.gz: 4774ef323ddcdcc36f4313b2bd5ee91f5b5d2b5a8a5bdbb02c6fec79ce4e06b3bd806b34647ce6182eaf18492c58744a91ebae2ade7da3b929983c210b7e1dc5
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/lib/cron_format.rb CHANGED
@@ -4,6 +4,7 @@
4
4
 
5
5
  require 'date'
6
6
  require 'time'
7
+ require 'c32'
7
8
 
8
9
 
9
10
  MINUTE = 60
@@ -14,12 +15,17 @@ TF = "%s-%s-%s %s:%s"
14
15
 
15
16
 
16
17
  class CronFormat
18
+ using ColouredText
17
19
 
18
20
  attr_reader :to_time, :to_expression
19
21
 
20
22
  def initialize(cron_string, now=Time.now, debug: false)
21
- @cron_string, @to_time, @debug = cron_string, now, debug
23
+
24
+ puts 'inside CronFormat'.info if debug
25
+ @cron_string, @now, @debug = cron_string, now, debug
26
+ @to_time = @now
22
27
  parse()
28
+
23
29
  end
24
30
 
25
31
  # supply a Time object. Modifying the date can be helpful when
@@ -51,7 +57,7 @@ class CronFormat
51
57
  def nudge()
52
58
 
53
59
  t1 = @to_time
54
- puts 't1: ' + t1.inspect if @debug
60
+ puts ('t1: ' + t1.inspect).debug if @debug
55
61
  a = @cron_string.split
56
62
 
57
63
  val = if @cron_string =~ %r{[/,-]} then
@@ -62,7 +68,7 @@ class CronFormat
62
68
 
63
69
  index, n = 0, 1
64
70
 
65
- puts 'val: ' + val.inspect if @debug
71
+ puts ('val: ' + val.inspect).debug if @debug
66
72
 
67
73
  if val then
68
74
  index = a.index(val)
@@ -83,7 +89,7 @@ class CronFormat
83
89
  end
84
90
  end
85
91
 
86
- puts 'index: ' + index.inspect if @debug
92
+ puts ('index: ' + index.inspect).debug if @debug
87
93
 
88
94
  month_proc = lambda {|t1,n|
89
95
  a = t1.to_a
@@ -104,13 +110,13 @@ class CronFormat
104
110
  ]
105
111
 
106
112
  if @debug then
107
- puts '@to_time: ' + @to_time.inspect
108
- puts 'n: ' + n.inspect
113
+ puts ('@to_time: ' + @to_time.inspect).debug
114
+ puts ('n: ' + n.inspect).debug
109
115
  end
110
116
 
111
117
  r = units[index].call @to_time, n
112
118
 
113
- puts 'r: ' + r.inspect if @debug
119
+ puts ('r: ' + r.inspect).debug if @debug
114
120
 
115
121
  @to_time = if n > 1 then
116
122
 
@@ -125,6 +131,8 @@ class CronFormat
125
131
  end
126
132
 
127
133
  def parse()
134
+
135
+ puts ('0. @to_time: ' + @to_time.inspect).debug if @debug
128
136
 
129
137
  raw_a = @cron_string.split
130
138
  raw_a << '*' if raw_a.length <= 5 # add the year?
@@ -135,9 +143,28 @@ class CronFormat
135
143
  @to_time.month == month.to_i
136
144
  end
137
145
 
146
+ puts ('1. @to_time: ' + @to_time.inspect).debug if @debug
147
+
148
+ #
149
+
150
+ if @debug then
151
+ puts ('1.5 @to_time: ' + @to_time.inspect).debug
152
+ puts ('hours: ' + hours.inspect).debug
153
+ puts ('mins: ' + mins.inspect).debug
154
+ end
155
+
138
156
  if mins[/^\d+$/] and hours[/^\d+$/] then
139
- @to_time += MINUTE until @to_time.min == mins.to_i and \
140
- @to_time.hour == hours.to_i
157
+
158
+ if @to_time.to_date != @now.to_date then
159
+ @to_time = Time.local(@to_time.year, @to_time.month, @to_time.day)
160
+ end
161
+
162
+ until (@to_time.min == mins.to_i and @to_time.hour == hours.to_i) \
163
+ or (@to_time - 1).isdst != @to_time.isdst do
164
+
165
+ puts ('1.7 @to_time: ' + @to_time.inspect).debug if @debug
166
+ @to_time += MINUTE
167
+ end
141
168
  @to_time -= MINUTE
142
169
  else
143
170
 
@@ -147,7 +174,9 @@ class CronFormat
147
174
  end
148
175
 
149
176
  @to_time += HOUR until @to_time.hour == hours.to_i if hours[/^\d+$/]
150
- end
177
+ end
178
+
179
+ puts ('2. @to_time: ' + @to_time.inspect).debug if @debug
151
180
 
152
181
  if wday[/^[0-6]$/] and @to_time.wday != wday.to_i then
153
182
  @to_time += DAY until @to_time.wday == wday.to_i
@@ -163,6 +192,8 @@ class CronFormat
163
192
 
164
193
  @to_time = dt2.to_time
165
194
  end
195
+
196
+ puts ('3. @to_time: ' + @to_time.inspect).debug if @debug
166
197
 
167
198
  units = @to_time.to_a.values_at(1..4) + [nil, @to_time.year]
168
199
 
@@ -239,7 +270,9 @@ class CronFormat
239
270
  end
240
271
  end
241
272
 
242
- dates = inflate(raw_date)
273
+ dates = inflate(raw_date)
274
+
275
+ puts ('dates: ' + dates.inspect).debug if @debug
243
276
 
244
277
  a = dates.map do |date|
245
278
 
@@ -278,6 +311,11 @@ class CronFormat
278
311
  # starting from the biggest unit, attempt to increment that
279
312
  # unit where it is equal to '*'
280
313
 
314
+ if @debug then
315
+ puts ('t: ' + t.inspect).debug
316
+ puts ('@to_time: ' + @to_time.inspect).debug
317
+ end
318
+
281
319
  if t < @to_time then
282
320
 
283
321
  if t.month < @to_time.month and raw_a[4] == '*' then
@@ -285,6 +323,7 @@ class CronFormat
285
323
  # increment the year
286
324
  d[4].succ!
287
325
  t = Time.parse(TF % d.reverse)
326
+ puts 't: ' + t.inspect if @debug
288
327
 
289
328
  if repeaters[4] then
290
329
 
@@ -345,6 +384,8 @@ class CronFormat
345
384
 
346
385
  t
347
386
  end
387
+
388
+ puts ('a: ' + a.inspect).debug if @debug
348
389
 
349
390
  @to_time = a.compact.min
350
391
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cron_format
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -30,8 +30,28 @@ cert_chain:
30
30
  Jde8bC6zoA/f/DUUzBf2TtjXPuoAdtsV3CT3nIo880mXyihT9CL9ulTHMJCBR73I
31
31
  fsk=
32
32
  -----END CERTIFICATE-----
33
- date: 2018-04-09 00:00:00.000000000 Z
34
- dependencies: []
33
+ date: 2019-01-09 00:00:00.000000000 Z
34
+ dependencies:
35
+ - !ruby/object:Gem::Dependency
36
+ name: c32
37
+ requirement: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '0.1'
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: 0.1.2
45
+ type: :runtime
46
+ prerelease: false
47
+ version_requirements: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - "~>"
50
+ - !ruby/object:Gem::Version
51
+ version: '0.1'
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 0.1.2
35
55
  description:
36
56
  email: james@jamesrobertson.eu
37
57
  executables: []
@@ -59,7 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
59
79
  version: '0'
60
80
  requirements: []
61
81
  rubyforge_project:
62
- rubygems_version: 2.6.13
82
+ rubygems_version: 2.7.6
63
83
  signing_key:
64
84
  specification_version: 4
65
85
  summary: Accepts a cron expression and outputs the relative time (e.g. 0 7 1 1 * *
metadata.gz.sig CHANGED
Binary file