et-orbi 1.2.7 → 1.2.9

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: 23ff138170f965f0a2dc35d38aaa08123ddfd97176d76f5e1b2136306eec812e
4
- data.tar.gz: 193d8bca6b8cfb34f023aadb504e127fd3f187eb64c10f546327510c8f487e04
3
+ metadata.gz: 435f9eb2e9b27822b9ee161fbe2449375cb710e1e01b8f3313c61983424aba85
4
+ data.tar.gz: a72603974625eb4e8c49e89c3a317002ea8661adbaa461c2d143450bd8b9c40a
5
5
  SHA512:
6
- metadata.gz: 9a5747b65189567c49a9dda0936bac7d947deaa8a5067ba4d311d1c80032722baae682acfc111488d8c6b3139fa41238dfec645279983449312c6f5aa8881eb9
7
- data.tar.gz: 2173668af72a6c2aff4e992201d5c74ffe5f87023f6e52c4c42389c28bb8cab4a231c55142bbc9c12513173260c80bf3b372c0ccad555900f6a7efad01e35482
6
+ metadata.gz: b45a1917c605b29254c97d5ab27d1b5e894cb2e9ed01b27594a19b8a52fc16c18fe6f59d56a362cedc0e0d3131278ec2d0d288427a132ce2b5152a7b0404ab22
7
+ data.tar.gz: dd28bbd9b3fe1ad3feb0088284a01f909453afd1ae56ba3c910215d85d9af793fdf3042adc27fa1789bc646412abb2643f0543c1b7bb2fa8e02aa50a57771f33
data/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
2
2
  # CHANGELOG.md
3
3
 
4
4
 
5
+ ## et-orbi 1.2.9 released 2024-03-13
6
+
7
+ - Refine #rweek computation, aim at noon instead of midnight, gh-38
8
+
9
+
10
+ ## et-orbi 1.2.8 released 2024-03-11 (13 ans)
11
+
12
+ - Cache the @ref time used in the #rweek and #rday computation
13
+
14
+
5
15
  ## et-orbi 1.2.7 released 2022-03-09
6
16
 
7
17
  - Fix the wday_in_month computation for floraison/fugit#67
data/CREDITS.md CHANGED
@@ -1,6 +1,9 @@
1
1
 
2
2
  # et-orbi credits
3
3
 
4
+ * Benjami Darcet @bdarcet https://github.com/floraison/fugit/issues/67 gh-38
5
+ * @franckduche https://github.com/floraison/fugit/issues/67 gh-38
6
+ * Igor Viktor https://github.com/gogainda gh-34
4
7
  * phibid, for https://github.com/floraison/fugit/issues/67
5
8
  * Peter Goldstein, https://github.com/petergoldstein GHA 3.3 j9.3, gh-32
6
9
  * harsha-flipp (https://github.com/harsha-flipp) https://github.com/floraison/fugit/issues/63
data/LICENSE.txt CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- Copyright (c) 2017-2022, John Mettraux, jmettraux+flor@gmail.com
2
+ Copyright (c) 2017-2024, John Mettraux, jmettraux+flor@gmail.com
3
3
 
4
4
  Permission is hereby granted, free of charge, to any person obtaining a copy
5
5
  of this software and associated documentation files (the "Software"), to deal
data/Makefile CHANGED
@@ -1,10 +1,10 @@
1
1
 
2
2
  ## gem tasks ##
3
3
 
4
- NAME = \
5
- $(shell ruby -e "s = eval(File.read(Dir['*.gemspec'][0])); puts s.name")
6
- VERSION = \
7
- $(shell ruby -e "s = eval(File.read(Dir['*.gemspec'][0])); puts s.version")
4
+ NAME != \
5
+ ruby -e "s = eval(File.read(Dir['*.gemspec'][0])); puts s.name"
6
+ VERSION != \
7
+ ruby -e "s = eval(File.read(Dir['*.gemspec'][0])); puts s.version"
8
8
 
9
9
  count_lines:
10
10
  find lib -name "*.rb" | xargs cat | ruby -e "p STDIN.readlines.count { |l| l = l.strip; l[0, 1] != '#' && l != '' }"
data/README.md CHANGED
@@ -3,7 +3,6 @@
3
3
 
4
4
  [![tests](https://github.com/floraison/et-orbi/workflows/test/badge.svg)](https://github.com/floraison/et-orbi/actions)
5
5
  [![Gem Version](https://badge.fury.io/rb/et-orbi.svg)](http://badge.fury.io/rb/et-orbi)
6
- [![Join the chat at https://gitter.im/floraison/fugit](https://badges.gitter.im/floraison/fugit.svg)](https://gitter.im/floraison/fugit?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
7
6
 
8
7
  Time zones for [fugit](https://github.com/floraison/fugit) and for [rufus-scheduler](https://github.com/jmettraux/rufus-scheduler). Urbi et Orbi.
9
8
 
data/lib/et-orbi/time.rb CHANGED
@@ -88,20 +88,34 @@ module EtOrbi
88
88
  (defined?(TZInfo::Data) ? '' : "\nand adding gem 'tzinfo-data'")
89
89
  ) unless @zone
90
90
 
91
+ touch
92
+ end
93
+
94
+ # Nullify the "caches" used by #to_time, #rweek, and others
95
+ #
96
+ def touch
97
+
91
98
  @time = nil
92
- # cache for #to_time result
99
+ @ref = nil
93
100
  end
94
101
 
95
102
  def seconds=(f)
96
103
 
97
- @time = nil
98
104
  @seconds = f
105
+
106
+ touch
107
+
108
+ f
99
109
  end
100
110
 
101
111
  def zone=(z)
102
112
 
103
- @time = nil
113
+
104
114
  @zone = self.class.get_tzone(zone || :current)
115
+
116
+ touch
117
+
118
+ @zone
105
119
  end
106
120
 
107
121
  # Returns true if this EoTime instance corresponds to 2 different UTC
@@ -230,8 +244,8 @@ module EtOrbi
230
244
  def <=(o); @seconds <= _to_f(o); end
231
245
  def <=>(o); @seconds <=> _to_f(o); end
232
246
 
233
- def add(t); @time = nil; @seconds += t.to_f; self; end
234
- def subtract(t); @time = nil; @seconds -= t.to_f; self; end
247
+ def add(t); @seconds += t.to_f; touch; self; end
248
+ def subtract(t); @seconds -= t.to_f; touch; self; end
235
249
 
236
250
  def +(t); inc(t, 1); end
237
251
  def -(t); inc(t, -1); end
@@ -301,19 +315,24 @@ module EtOrbi
301
315
 
302
316
  def inc(t, dir=1)
303
317
 
304
- case t
305
- when Numeric
306
- nt = self.dup
307
- nt.seconds += dir * t.to_f
308
- nt
309
- when ::Time, ::EtOrbi::EoTime
310
- fail ArgumentError.new(
311
- "Cannot add #{t.class} to EoTime") if dir > 0
312
- @seconds + dir * t.to_f
313
- else
314
- fail ArgumentError.new(
315
- "Cannot call add or subtract #{t.class} to EoTime instance")
316
- end
318
+ r =
319
+ case t
320
+ when Numeric
321
+ nt = self.dup
322
+ nt.seconds += dir * t.to_f
323
+ nt
324
+ when ::Time, ::EtOrbi::EoTime
325
+ fail ArgumentError.new(
326
+ "Cannot add #{t.class} to EoTime") if dir > 0
327
+ @seconds + dir * t.to_f
328
+ else
329
+ fail ArgumentError.new(
330
+ "Cannot call add or subtract #{t.class} to EoTime instance")
331
+ end
332
+
333
+ touch
334
+
335
+ r
317
336
  end
318
337
 
319
338
  def localtime(zone=nil)
@@ -330,16 +349,22 @@ module EtOrbi
330
349
  - count_weeks(EtOrbi.make_time(strftime('%F 12:00:00 %/Z')) , 1) ]
331
350
  end
332
351
 
352
+ # "reference week", used in fugit for cron modulo notation
353
+ #
333
354
  def rweek
334
355
 
335
- ((self - EtOrbi.make_time('2019-01-01 00:00:00', @zone)) / WEEK_S)
336
- .floor + 1
356
+ @ref ||= EtOrbi.make_time('2019-01-01 12:00:00', @zone)
357
+
358
+ ((self - @ref) / WEEK_S).floor + 1
337
359
  end
338
360
 
361
+ # "reference week", used in fugit for cron modulo notation
362
+ #
339
363
  def rday
340
364
 
341
- ((self - EtOrbi.make_time('2019-01-01 00:00:00', @zone)) / DAY_S)
342
- .floor + 1
365
+ @ref ||= EtOrbi.make_time('2019-01-01 00:00:00', @zone)
366
+
367
+ ((self - @ref) / DAY_S).floor + 1
343
368
  end
344
369
 
345
370
  def reach(points)
@@ -374,6 +399,11 @@ module EtOrbi
374
399
  t
375
400
  end
376
401
 
402
+ def clone
403
+
404
+ EtOrbi::EoTime.new(@seconds, @zone)
405
+ end
406
+
377
407
  protected
378
408
 
379
409
  # Returns a Ruby Time instance.
data/lib/et-orbi.rb CHANGED
@@ -13,6 +13,6 @@ require 'et-orbi/zone'
13
13
 
14
14
  module EtOrbi
15
15
 
16
- VERSION = '1.2.7'
16
+ VERSION = '1.2.9'
17
17
  end
18
18
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: et-orbi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.7
4
+ version: 1.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Mettraux
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-09 00:00:00.000000000 Z
11
+ date: 2024-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tzinfo
@@ -82,7 +82,7 @@ metadata:
82
82
  bug_tracker_uri: https://github.com/floraison/et-orbi/issues
83
83
  homepage_uri: https://github.com/floraison/et-orbi
84
84
  source_code_uri: https://github.com/floraison/et-orbi
85
- post_install_message:
85
+ post_install_message:
86
86
  rdoc_options: []
87
87
  require_paths:
88
88
  - lib
@@ -97,8 +97,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
97
  - !ruby/object:Gem::Version
98
98
  version: '0'
99
99
  requirements: []
100
- rubygems_version: 3.1.2
101
- signing_key:
100
+ rubygems_version: 3.4.10
101
+ signing_key:
102
102
  specification_version: 4
103
103
  summary: time with zones
104
104
  test_files: []