fugit 1.1.4 → 1.1.5

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
  SHA1:
3
- metadata.gz: d3a2d6e072a2ae0ce68473054ef7701ce45a4867
4
- data.tar.gz: a1c5e3b9c36b2ee907d617943b5baff6de9005a4
3
+ metadata.gz: f27107c7603ef6d23deb7ce3a37f377f91efc738
4
+ data.tar.gz: 01322c2865d102807fe4e263c83d6c6ce56853d7
5
5
  SHA512:
6
- metadata.gz: 2c1cc2399627c451105219913f9668dfbd55ea77259e8fad5a356da4d828bd136bb72de28446451bf77bbf7455f62c8a73ec25f59d3426b89cd438382ee2a973
7
- data.tar.gz: bb30951b92097750810dc700fa0d5d80ade2bc80d5da398776b9f554db3e889e4086c52fd412ba33bacb5f2d66742b3726aa6a694f64653a12780e76970b0e30
6
+ metadata.gz: acbd5be7fe73de2b68cb518f6626f93d1d7c06f474cb89c2ae487013854deeaebf5029c97ee57d97832f0f2f81a819eeed65a5cf9929dc81bc3c7a7baa0832fc
7
+ data.tar.gz: 7cfd640731cf49b1ac378d21dc310e852c1bdc995b4ec90228c55db7685041195b3df5caf69e88cf446eb8112fcd4839572dcb542f3b32a424d4469cf74927e1
@@ -2,6 +2,11 @@
2
2
  # fugit CHANGELOG.md
3
3
 
4
4
 
5
+ ## fugit 1.1.5 released 2018-07-30
6
+
7
+ * Add Fugit::Cron#rough_frequency (for https://github.com/jmettraux/rufus-scheduler/pull/276)
8
+
9
+
5
10
  ## fugit 1.1.4 released 2018-07-20
6
11
 
7
12
  * Add duration support for Fugit::Nat (@cristianbica gh-7)
data/README.md CHANGED
@@ -63,6 +63,7 @@ p c.previous_time # => 2017-01-01 00:00:00 +0900
63
63
 
64
64
  p c.brute_frequency # => [ 604800, 604800, 53 ]
65
65
  # [ delta min, delta max, occurrence count ]
66
+ p c.rough_frequency # => 7 * 24 * 3600 (7d rough frequency)
66
67
 
67
68
  p c.match?(Time.parse('2017-08-06')) # => true
68
69
  p c.match?(Time.parse('2017-08-07')) # => false
@@ -1,7 +1,7 @@
1
1
 
2
2
  module Fugit
3
3
 
4
- VERSION = '1.1.4'
4
+ VERSION = '1.1.5'
5
5
  end
6
6
 
7
7
  require 'time'
@@ -250,6 +250,40 @@ module Fugit
250
250
  end
251
251
  end
252
252
 
253
+ SLOTS = [
254
+ [ :seconds, 1, 60 ],
255
+ [ :minutes, 60, 60 ],
256
+ [ :hours, 3600, 24 ],
257
+ [ :days, 24 * 3600, 365 ] ]
258
+
259
+ def rough_frequency
260
+
261
+ slots = SLOTS
262
+ .collect { |k, v0, v1|
263
+ a = (k == :days) ? rough_days : instance_variable_get("@#{k}")
264
+ [ k, v0, v1, a ] }
265
+
266
+ slots.each do |k, v0, _, a|
267
+ next if a == [ 0 ]
268
+ break if a != nil
269
+ return v0 if a == nil
270
+ end
271
+
272
+ slots.each do |k, v0, v1, a|
273
+ next unless a && a.length > 1
274
+ return (a + [ a.first + v1 ])
275
+ .each_cons(2)
276
+ .collect { |a0, a1| a1 - a0 }
277
+ .min * v0
278
+ end
279
+
280
+ slots.reverse.each do |k, v0, v1, a|
281
+ return v0 * v1 if a && a.length == 1
282
+ end
283
+
284
+ 1 # second
285
+ end
286
+
253
287
  class Frequency
254
288
 
255
289
  attr_reader :span, :delta_min, :delta_max, :occurrences
@@ -283,6 +317,16 @@ module Fugit
283
317
  [ @seconds, @minutes, @hours, @monthdays, @months, @weekdays ]
284
318
  end
285
319
 
320
+ def to_h
321
+
322
+ { seconds: @seconds,
323
+ minutes: @minutes,
324
+ hours: @hours,
325
+ monthdays: @monthdays,
326
+ months: @months,
327
+ weekdays: @weekdays }
328
+ end
329
+
286
330
  def ==(o)
287
331
 
288
332
  o.is_a?(::Fugit::Cron) && o.to_a == to_a
@@ -296,6 +340,31 @@ module Fugit
296
340
 
297
341
  protected
298
342
 
343
+ def rough_days
344
+
345
+ return nil if @weekdays == nil && @monthdays == nil
346
+
347
+ months = (@months || (1..12).to_a)
348
+
349
+ monthdays = months
350
+ .product(@monthdays || [])
351
+ .collect { |m, d|
352
+ d = 31 + d if d < 0
353
+ (m - 1) * 30 + d } # rough
354
+
355
+ weekdays = (@weekdays || [])
356
+ .collect { |d, w|
357
+ w ?
358
+ d + (w - 1) * 7 :
359
+ (0..3).collect { |ww| d + ww * 7 } }
360
+ .flatten
361
+ weekdays = months
362
+ .product(weekdays)
363
+ .collect { |m, d| (m - 1) * 30 + d } # rough
364
+
365
+ (monthdays + weekdays).sort
366
+ end
367
+
299
368
  FREQUENCY_CACHE = {}
300
369
 
301
370
  def init(original, h)
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.1.4
4
+ version: 1.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Mettraux
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-20 00:00:00.000000000 Z
11
+ date: 2018-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: raabro