reprise 0.1.1-aarch64-linux → 0.1.2-aarch64-linux

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
  SHA256:
3
- metadata.gz: 3864b68e8660a3701c8ec042dbcda81a40d0d05deba495308ae6e16b1d049c90
4
- data.tar.gz: '095ce9dd6f4377afa53cfe3cbe761717c7277926a69fee3a5fd182edf4d40fc1'
3
+ metadata.gz: 4a69d48df9d09168a3c9ba4d91f9a709f6cad74841e5628ab21ab707deba61af
4
+ data.tar.gz: adb7398bb31fc0be975bfcc614631578d3ca3a26a21735399c9b165d8545a9b3
5
5
  SHA512:
6
- metadata.gz: 3cb472f6fe20c116ebb042c8e6f245b42be1e9666b961c93e40853502c4fc71035d5d1d9850102ddb40a1c91775796214dd48f49593a412edd267dc18807ac5e
7
- data.tar.gz: 2799a8d4bf5ab39d6d5a58ddd03ab81ddf3e626fabce24615262485d52c31ea1cc53f5c4bcd90625fb6f8ecc5f2e761aa8f3a13e72bd4b920bb3daa163e92aa4
6
+ metadata.gz: f538123b3aa37e0c8798304e76307d8594c6290e7d756bc8b907497b2078d371e67724f8d8be9aeb390fc799029dcce7e80f643f3bb4805bacc83287dbe90e03
7
+ data.tar.gz: 801ca2f18ca8edeed59b98aacadde6297659c6bc9f6c4d5cd5ae22f2af7e147537145edac7a08e47c9139633e7ef2a57271658438615464c65760addf5936d04
data/Cargo.lock CHANGED
@@ -594,7 +594,7 @@ checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
594
594
 
595
595
  [[package]]
596
596
  name = "reprise"
597
- version = "0.1.0"
597
+ version = "0.1.2"
598
598
  dependencies = [
599
599
  "chrono",
600
600
  "chrono-tz",
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Reprise
2
2
 
3
- [![Tests](https://github.com/jordanhiltunen/reprise/actions/workflows/test.yml/badge.svg)](https://github.com/jordanhiltunen/reprise/actions/workflows/test.yml) | [![Test CRuby Gem Build](https://github.com/jordanhiltunen/reprise/actions/workflows/cruby-build-and-install.yml/badge.svg)](https://github.com/jordanhiltunen/reprise/actions/workflows/cruby-build-and-install.yml)
3
+ [![Gem Version](https://badge.fury.io/rb/reprise.svg)](https://badge.fury.io/rb/reprise) | [![Tests](https://github.com/jordanhiltunen/reprise/actions/workflows/test.yml/badge.svg)](https://github.com/jordanhiltunen/reprise/actions/workflows/test.yml) | [![Test CRuby Gem Build](https://github.com/jordanhiltunen/reprise/actions/workflows/cruby-build-and-install.yml/badge.svg)](https://github.com/jordanhiltunen/reprise/actions/workflows/cruby-build-and-install.yml)
4
4
 
5
5
  Reprise is an experimental performance-first Ruby gem that provides support for defining event recurrence
6
6
  rules and generating & querying their future occurrences. Depending on your use case,
@@ -21,9 +21,11 @@ gem "reprise"
21
21
 
22
22
  ## Usage
23
23
 
24
+ _For a complete reference of all of the methods and options available, please [see our documentation](https://rubydoc.info/gems/reprise)._
25
+
24
26
  ### Initialize a new schedule
25
27
 
26
- All schedules need to be initialized with a `start_time` and `end_time`:
28
+ All schedules need to be initialized with `starts_at` and `ends_at` time bookends:
27
29
 
28
30
  ```ruby
29
31
  may_26_2015_four_thirty_pm_in_rome = Time.parse("2015-05-26 10:30:45").in_time_zone("Rome")
@@ -64,8 +66,9 @@ started at as the local time for each future occurrence:
64
66
 
65
67
  ```ruby
66
68
  first_occurrence = schedule.occurrences.first
67
- # => <Reprise::Core::Occurrence start_time="2015-05-31T14:30:45+00:00" end_time="2015-05-31T14:45:45+00:00" label="nil">
68
- first_occurrence.start_time.in_time_zone("Rome")
69
+ # => <Reprise::Core::Occurrence starts_at="2015-05-31T14:30:45+00:00" ends_at="2015-05-31T14:45:45+00:00" label="nil">
70
+
71
+ first_occurrence.starts_at.in_time_zone("Rome")
69
72
  # => Sun, 31 May 2015 16:30:45.000000000 CEST +02:00 # <- 4:30 PM
70
73
  ```
71
74
 
@@ -75,8 +78,9 @@ either by passing an hour/minute/second hash to `time_of_day`:
75
78
  ```ruby
76
79
  schedule.repeat_weekly(:sunday, time_of_day: { hour: 9, minute: 30 }, duration_in_seconds: 60)
77
80
  first_occurrence = schedule.occurrences.first
78
- # => => <Reprise::Core::Occurrence start_time="2015-05-31T07:30:00+00:00" end_time="2015-05-31T07:31:00+00:00" label="nil">
79
- first_occurrence.start_time.in_time_zone("Rome")
81
+ # => <Reprise::Core::Occurrence starts_at="2015-05-31T07:30:00+00:00" ends_at="2015-05-31T07:31:00+00:00" label="nil">
82
+
83
+ first_occurrence.starts_at.in_time_zone("Rome")
80
84
  # => Sun, 31 May 2015 09:30:00.000000000 CEST +02:00
81
85
  ```
82
86
 
@@ -85,8 +89,9 @@ Or, by passing a `Time` object instead:
85
89
  ```ruby
86
90
  ten_forty_five_pm_in_rome = Time.parse("2015-05-27 04:45:00").in_time_zone("Rome")
87
91
  schedule.repeat_weekly(:tuesday, time_of_day: ten_forty_five_pm_in_rome, duration_in_seconds: 60)
88
- # => <Reprise::Core::Occurrence start_time="2015-06-02T08:45:00+00:00" end_time="2015-06-02T08:46:00+00:00" label="nil">
89
- first_occurrence.start_time.in_time_zone("Rome")
92
+ # => <Reprise::Core::Occurrence starts_at="2015-06-02T08:45:00+00:00" ends_at="2015-06-02T08:46:00+00:00" label="nil">
93
+
94
+ first_occurrence.starts_at.in_time_zone("Rome")
90
95
  # => Tue, 02 Jun 2015 10:45:00.000000000 CEST +02:00
91
96
  ```
92
97
 
@@ -102,9 +107,11 @@ schedule = Reprise::Schedule.new(
102
107
 
103
108
  schedule.repeat_weekly(:wednesday, time_of_day: { hour: 9, minute: 30 }, duration_in_seconds: 10.minutes)
104
109
  occurrences = schedule.occurrences
110
+
105
111
  puts occurrences.size
106
112
  # => 29
107
- puts (occurrences.last.start_time.to_date - occurrences.first.start_time.to_date).to_i
113
+
114
+ puts (occurrences.last.starts_at.to_date - occurrences.first.starts_at.to_date).to_i
108
115
  # => 196 # days
109
116
  ```
110
117
 
@@ -121,18 +128,20 @@ schedule.repeat_weekly(
121
128
  occurrences = schedule.occurrences
122
129
  puts occurrences.size
123
130
  # => 8
124
- puts occurrences.first.start_time.in_time_zone("Rome")
131
+
132
+ puts occurrences.first.starts_at.in_time_zone("Rome")
125
133
  # 2015-07-10 04:01:00 +0200
126
- puts occurrences.last.start_time.in_time_zone("Rome")
134
+
135
+ puts occurrences.last.starts_at.in_time_zone("Rome")
127
136
  # 2015-08-28 04:01:00 +0200
128
- puts (occurrences.last.start_time.to_date - occurrences.first.start_time.to_date).to_i
137
+
138
+ puts (occurrences.last.starts_at.to_date - occurrences.first.starts_at.to_date).to_i
129
139
  # => 49 # days
130
140
  ```
131
141
 
132
142
  There are many recurring series that you can create; `#repeat_minutely`, `#repeat_hourly`,
133
- `#repeat_daily`, `#repeat_weekly`, `#repeat_monthly_by_day`, and `#repeat_monthly_by_nth_weekday`.
134
-
135
- For more information on each method, see the docs.
143
+ `#repeat_daily`, `#repeat_weekly`, `#repeat_monthly_by_day`, `#repeat_monthly_by_nth_weekday`,
144
+ and `#repeat_annually_by_day`.
136
145
 
137
146
  #### Adding labels to the occurrences of each series
138
147
 
@@ -142,14 +151,15 @@ you can add an optional label:
142
151
  ```ruby
143
152
  schedule.repeat_daily(label: "Coffee Time", time_of_day: { hour: 8 }, duration_in_seconds: 15.minutes)
144
153
  schedule.repeat_daily(label: "Tea Time", interval: 3, time_of_day: { hour: 9 }, duration_in_seconds: 10.minutes)
154
+
145
155
  schedule.occurrences.take(7).map { |o| puts o.inspect }
146
- # => <Reprise::Core::Occurrence label="Coffee Time" start_time="2015-05-27T06:00:00+00:00" end_time="2015-05-27T06:15:00+00:00">
147
- # => <Reprise::Core::Occurrence label="Tea Time" start_time="2015-05-27T07:00:00+00:00" end_time="2015-05-27T07:10:00+00:00">
148
- # => <Reprise::Core::Occurrence label="Coffee Time" start_time="2015-05-28T06:00:00+00:00" end_time="2015-05-28T06:15:00+00:00">
149
- # => <Reprise::Core::Occurrence label="Coffee Time" start_time="2015-05-29T06:00:00+00:00" end_time="2015-05-29T06:15:00+00:00">
150
- # => <Reprise::Core::Occurrence label="Coffee Time" start_time="2015-05-30T06:00:00+00:00" end_time="2015-05-30T06:15:00+00:00">
151
- # => <Reprise::Core::Occurrence label="Tea Time" start_time="2015-05-30T07:00:00+00:00" end_time="2015-05-30T07:10:00+00:00">
152
- # => <Reprise::Core::Occurrence label="Coffee Time" start_time="2015-05-31T06:00:00+00:00" end_time="2015-05-31T06:15:00+00:00">
156
+ # => <Reprise::Core::Occurrence label="Coffee Time" starts_at="2015-05-27T06:00:00+00:00" ends_at="2015-05-27T06:15:00+00:00">
157
+ # => <Reprise::Core::Occurrence label="Tea Time" starts_at="2015-05-27T07:00:00+00:00" ends_at="2015-05-27T07:10:00+00:00">
158
+ # => <Reprise::Core::Occurrence label="Coffee Time" starts_at="2015-05-28T06:00:00+00:00" ends_at="2015-05-28T06:15:00+00:00">
159
+ # => <Reprise::Core::Occurrence label="Coffee Time" starts_at="2015-05-29T06:00:00+00:00" ends_at="2015-05-29T06:15:00+00:00">
160
+ # => <Reprise::Core::Occurrence label="Coffee Time" starts_at="2015-05-30T06:00:00+00:00" ends_at="2015-05-30T06:15:00+00:00">
161
+ # => <Reprise::Core::Occurrence label="Tea Time" starts_at="2015-05-30T07:00:00+00:00" ends_at="2015-05-30T07:10:00+00:00">
162
+ # => <Reprise::Core::Occurrence label="Coffee Time" starts_at="2015-05-31T06:00:00+00:00" ends_at="2015-05-31T06:15:00+00:00">
153
163
  ```
154
164
 
155
165
  #### Excluding time intervals from the schedule's occurrences
@@ -160,11 +170,11 @@ occurrences and need to be excluded, you can add exclusions to your schedule bef
160
170
  ```ruby
161
171
  schedule.repeat_daily(label: "Standing Meeting", ends_at: may_26_2015_four_thirty_pm_in_rome + 5.days, duration_in_seconds: 15.minutes)
162
172
  schedule.occurrences.map { |o| puts o.inspect }
163
- # => <Reprise::Core::Occurrence start_time="2015-05-26T14:30:45+00:00" end_time="2015-05-26T14:45:45+00:00" label="Standing Meeting">
164
- # => <Reprise::Core::Occurrence start_time="2015-05-27T14:30:45+00:00" end_time="2015-05-27T14:45:45+00:00" label="Standing Meeting">
165
- # => <Reprise::Core::Occurrence start_time="2015-05-28T14:30:45+00:00" end_time="2015-05-28T14:45:45+00:00" label="Standing Meeting">
166
- # => <Reprise::Core::Occurrence start_time="2015-05-29T14:30:45+00:00" end_time="2015-05-29T14:45:45+00:00" label="Standing Meeting">
167
- # => <Reprise::Core::Occurrence start_time="2015-05-30T14:30:45+00:00" end_time="2015-05-30T14:45:45+00:00" label="Standing Meeting">
173
+ # => <Reprise::Core::Occurrence starts_at="2015-05-26T14:30:45+00:00" ends_at="2015-05-26T14:45:45+00:00" label="Standing Meeting">
174
+ # => <Reprise::Core::Occurrence starts_at="2015-05-27T14:30:45+00:00" ends_at="2015-05-27T14:45:45+00:00" label="Standing Meeting">
175
+ # => <Reprise::Core::Occurrence starts_at="2015-05-28T14:30:45+00:00" ends_at="2015-05-28T14:45:45+00:00" label="Standing Meeting">
176
+ # => <Reprise::Core::Occurrence starts_at="2015-05-29T14:30:45+00:00" ends_at="2015-05-29T14:45:45+00:00" label="Standing Meeting">
177
+ # => <Reprise::Core::Occurrence starts_at="2015-05-30T14:30:45+00:00" ends_at="2015-05-30T14:45:45+00:00" label="Standing Meeting">
168
178
 
169
179
  # You don't need to specify entire days; you can pass time intervals as narrow or wide as you like.
170
180
  schedule.add_exclusion(
@@ -174,10 +184,10 @@ schedule.add_exclusion(
174
184
 
175
185
  schedule.occurrences.map { |o| puts o.inspect }
176
186
  # N.B. The occurrence on 2015-05-28 is now excluded.
177
- # => <Reprise::Core::Occurrence start_time="2015-05-26T14:30:45+00:00" end_time="2015-05-26T14:45:45+00:00" label="Standing Meeting">
178
- # => <Reprise::Core::Occurrence start_time="2015-05-27T14:30:45+00:00" end_time="2015-05-27T14:45:45+00:00" label="Standing Meeting">
179
- # => <Reprise::Core::Occurrence start_time="2015-05-29T14:30:45+00:00" end_time="2015-05-29T14:45:45+00:00" label="Standing Meeting">
180
- # => <Reprise::Core::Occurrence start_time="2015-05-30T14:30:45+00:00" end_time="2015-05-30T14:45:45+00:00" label="Standing Meeting">
187
+ # => <Reprise::Core::Occurrence starts_at="2015-05-26T14:30:45+00:00" ends_at="2015-05-26T14:45:45+00:00" label="Standing Meeting">
188
+ # => <Reprise::Core::Occurrence starts_at="2015-05-27T14:30:45+00:00" ends_at="2015-05-27T14:45:45+00:00" label="Standing Meeting">
189
+ # => <Reprise::Core::Occurrence starts_at="2015-05-29T14:30:45+00:00" ends_at="2015-05-29T14:45:45+00:00" label="Standing Meeting">
190
+ # => <Reprise::Core::Occurrence starts_at="2015-05-30T14:30:45+00:00" ends_at="2015-05-30T14:45:45+00:00" label="Standing Meeting">
181
191
  ```
182
192
 
183
193
  #### Querying for occurrences within a given time interval
@@ -198,7 +208,7 @@ schedule.occurrences_between(
198
208
  may_26_2015_four_thirty_pm_in_rome + 2.days,
199
209
  may_26_2015_four_thirty_pm_in_rome + 3.days,
200
210
  ).map { |o| puts o.inspect }
201
- # => <Reprise::Core::Occurrence start_time="2015-05-28T14:30:45+00:00" end_time="2015-05-28T14:45:45+00:00" label="Standing Meeting">
211
+ # => <Reprise::Core::Occurrence starts_at="2015-05-28T14:30:45+00:00" ends_at="2015-05-28T14:45:45+00:00" label="Standing Meeting">
202
212
  ```
203
213
 
204
214
  Both `#occurs_between?` and `#occurrences_between` also support an optional `include_overlapping`
@@ -235,6 +245,7 @@ A truism in the Ruby community is that "Ruby is slow, but that doesn't matter fo
235
245
  > speed, or throughput that Ruby chokes on. Or because the trade-offs are worth it: Often the
236
246
  > quicker development, cheaper development, faster time-to-market etc is worth the extra resources
237
247
  > (servers, hardware, SAAS) you must throw at your app to keep it performing acceptable.
248
+ >
238
249
  > https://berk.es/2022/08/09/ruby-slow-database-slow/
239
250
 
240
251
  This is often delightfully true, until on the odd occasion Ruby's speed requires that a straightforward feature
@@ -305,7 +316,7 @@ and 3:30 - 4:30 PM.
305
316
  How do you filter out recurring series occurrences that conflict with other schedule entries that exist
306
317
  in your application?
307
318
 
308
- At time of writing, alternative gems' solutions to this problem are all unfortunately lacking:
319
+ At time of writing, alternative gems' solutions to this problem are somewhat wanting:
309
320
  - **None**: It is entirely the responsibility of the client application to handle occurrence exclusions,
310
321
  despite this logic being core to the domain of recurring schedule management.
311
322
  - **Date-based exclusion**: Client applications can pass specific dates when occurrences should be excluded.
Binary file
Binary file
Binary file
@@ -8,9 +8,9 @@ module Reprise
8
8
  # of adding documentation; it is defined dynamically within
9
9
  # the Rust extension.
10
10
  class Occurrence
11
- # @!attribute [r] start_time
11
+ # @!attribute [r] starts_at
12
12
  # @return [Time] The start time of the occurrence, given in the current system time zone.
13
- # @!attribute [r] end_time
13
+ # @!attribute [r] ends_at
14
14
  # @return [Time] The end time of the occurrence, given in the current system time zone.
15
15
  # @!attribute [r] label
16
16
  # @return [String, nil] The label given to the recurring series from which the
@@ -81,7 +81,7 @@ module Reprise
81
81
 
82
82
  # @!macro [new] duration_in_seconds
83
83
  # @param duration_in_seconds [Integer]
84
- # This determines the end time of each occurrence ({Reprise::Core::Occurrence#end_time}), and also
84
+ # This determines the end time of each occurrence ({Reprise::Core::Occurrence#ends_at}), and also
85
85
  # influences occurrence queries, and whether any added exclusions conflict with any of the schedule's
86
86
  # occurrences.
87
87
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Reprise
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.2"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reprise
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: aarch64-linux
6
6
  authors:
7
7
  - Jordan Hiltunen