nydp-kalendor 0.0.1 → 0.0.3
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/lib/lisp/kalendor-000-core.nydp +217 -40
- data/lib/nydp/kalendor/version.rb +1 -1
- data/nydp-kalendor.gemspec +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa13412eb35a046cb93285d721b8d5ac24fead59
|
4
|
+
data.tar.gz: d1d031829686394fdb19eb83ed618f0a6d2f5076
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a5d712825b558a07827661547e0ebecc3b5c37afe2673c845e45e6a2718c6962d9325b5bba99e965775debdc6a53317bfc5e5d2d7f5b86f7c75e10d0523f469
|
7
|
+
data.tar.gz: 815082aab0181563dd393e5c031eacbfd7ae134908b37aeaccb0599365a253dd075ec6a9fc26141095419217c1ef795bc8a274fbc3213a2a47a3c2b25ad0bd91
|
@@ -26,6 +26,26 @@
|
|
26
26
|
;;
|
27
27
|
;;
|
28
28
|
|
29
|
+
(chapter-start 'kalendor "utilities for defining, building, and manipulating calendars. ")
|
30
|
+
|
31
|
+
(dox-add-doc 'kalendor-build/named 'def '("store a new calendar under the given name") '(name label expr) nil '(kalendor))
|
32
|
+
(dox-add-doc 'kalendor-build/weekday 'def '("all dates for the given day of the week ;
|
33
|
+
if there is a second integer parameter n,
|
34
|
+
limit to the nth of the given day each month") '(day n) nil '(kalendor))
|
35
|
+
(dox-add-doc 'kalendor-build/annual 'def '("the same specified date in every year") '(date month) nil '(kalendor))
|
36
|
+
(dox-add-doc 'kalendor-build/union 'def '("the union of all dates provided by the given calendars") 'args nil '(kalendor))
|
37
|
+
(dox-add-doc 'kalendor-build/intersect 'def '("the intersection of all dates provided by the given calendars") 'args nil '(kalendor))
|
38
|
+
(dox-add-doc 'kalendor-build/subtract 'def '("all the dates of 'keep, except for any dates in 'toss") '(keep toss) nil '(kalendor))
|
39
|
+
(dox-add-doc 'kalendor-build/list 'def '("a preset list of dates") 'args nil '(kalendor))
|
40
|
+
(dox-add-doc 'kalendor-build/interval 'def '("all the dates from 'from upto 'upto (inclusive)") '(from upto) nil '(kalendor))
|
41
|
+
(dox-add-doc 'kalendor-build/month 'def '("all the dates in the given month, every year.
|
42
|
+
'month is an integer, january is 1") '(month) nil '(kalendor))
|
43
|
+
(dox-add-doc 'kalendor/find 'def '("find the given calendar in the store") '(name) nil '(kalendor))
|
44
|
+
(dox-add-doc 'kalendor/add 'def '("add the given calendar to the store") '(kal) nil '(kalendor))
|
45
|
+
(dox-add-doc 'kalendor/delete 'def '("remove the given calendar from the store") '(name) nil '(kalendor))
|
46
|
+
(dox-add-doc 'kalendor/names 'def '("get the list of stored calendar names") nil nil '(kalendor))
|
47
|
+
(dox-add-doc 'kalendor/list 'def '("get the list of stored calendars") nil nil '(kalendor))
|
48
|
+
|
29
49
|
(assign kalendor/substitutions
|
30
50
|
{
|
31
51
|
named 'kalendor-build/named
|
@@ -36,61 +56,218 @@
|
|
36
56
|
subtract 'kalendor-build/subtract
|
37
57
|
list 'kalendor-build/list
|
38
58
|
interval 'kalendor-build/interval
|
39
|
-
weekday 'kalendor-build/weekday
|
40
59
|
month 'kalendor-build/month
|
41
60
|
lookup 'kalendor/find
|
42
61
|
})
|
43
62
|
|
44
63
|
(def kalendor/replace-names (expr)
|
45
|
-
|
46
|
-
|
47
|
-
(
|
48
|
-
|
64
|
+
; used internally by 'kalendor macro
|
65
|
+
(if (sym? expr)
|
66
|
+
(if (kalendor/find expr)
|
67
|
+
`(kalendor/find ',expr)
|
68
|
+
(hash-get kalendor/substitutions expr)
|
69
|
+
(hash-get kalendor/substitutions expr)
|
70
|
+
expr)
|
49
71
|
(pair? expr)
|
50
72
|
(cons (kalendor/replace-names (car expr))
|
51
73
|
(kalendor/replace-names (cdr expr)))
|
52
74
|
expr))
|
53
75
|
|
54
76
|
(def kalendor/test (kal from upto)
|
77
|
+
; used internally for testing kalendor expressions
|
55
78
|
(map to-string (kalendor/dates kal from upto)))
|
56
79
|
|
57
80
|
(mac kalendor (name label expr)
|
58
|
-
|
59
|
-
|
60
|
-
(kalendor
|
61
|
-
|
62
|
-
(kalendor
|
63
|
-
|
64
|
-
|
65
|
-
(kalendor
|
66
|
-
|
67
|
-
(kalendor
|
68
|
-
|
69
|
-
(kalendor
|
70
|
-
(kalendor
|
71
|
-
(kalendor
|
72
|
-
(kalendor
|
73
|
-
(kalendor
|
74
|
-
(kalendor
|
75
|
-
|
76
|
-
(
|
77
|
-
(kalendor a-01-
|
78
|
-
(kalendor a-
|
79
|
-
(kalendor a-
|
80
|
-
|
81
|
-
(kalendor
|
82
|
-
(kalendor
|
83
|
-
(kalendor
|
84
|
-
(kalendor
|
85
|
-
|
86
|
-
(kalendor
|
87
|
-
|
81
|
+
; create a calendar but do not add it to the store
|
82
|
+
; Note that for a more concise 'expr, you can refer to previously-named calendars by name, and all kalendor-build/XXX functions simply by XXX
|
83
|
+
(kalendor/replace-names `(named ',name ,label ,expr)))
|
84
|
+
|
85
|
+
(mac kalendor/public (name label expr)
|
86
|
+
; create a calendar and add it to the store with the given name.
|
87
|
+
; Note that for a more concise 'expr, you can refer to previously-named calendars by name, and all kalendor-build/XXX functions simply by XXX
|
88
|
+
`(kalendor/add (kalendor ,name ,label ,expr)))
|
89
|
+
|
90
|
+
(kalendor/public mondays { en "Mondays" fr "lundis" de "Montag" } (weekday 1))
|
91
|
+
(kalendor/public tuesdays { en "Tuesdays" fr "mardis" de "Dienstag" } (weekday 2))
|
92
|
+
(kalendor/public wednesdays { en "Wednesdays" fr "mercredis" de "Mittwoch" } (weekday 3))
|
93
|
+
(kalendor/public thursdays { en "Thursdays" fr "jeudis" de "Donnerstag" } (weekday 4))
|
94
|
+
(kalendor/public fridays { en "Fridays" fr "vendredis" de "Freitag" } (weekday 5))
|
95
|
+
(kalendor/public saturdays { en "Saturdays" fr "samedis" de "Samstag" } (weekday 6))
|
96
|
+
(kalendor/public sundays { en "Sundays" fr "dimanches" de "Sonntag" } (weekday 0))
|
97
|
+
(kalendor/public weekends { en "weekends" fr "weekends" de "Wochenende" } (union saturdays sundays))
|
98
|
+
|
99
|
+
(= kal (hash))
|
100
|
+
(= kal.a-01-jan (kalendor a-01-jan { en "1 jan" fr "1 janv" de "1. Januar" } (annual 1 1)))
|
101
|
+
(= kal.a-17-mar (kalendor a-17-mar { en "17 mar" fr "17 mars" de "17. Marz" } (annual 17 3)))
|
102
|
+
(= kal.a-01-may (kalendor a-01-may { en "1 may" fr "1 mai" de "1. May" } (annual 1 5)))
|
103
|
+
(= kal.a-08-may (kalendor a-08-may { en "8 may" fr "8 mai" de "8. May" } (annual 8 5)))
|
104
|
+
(= kal.a-01-jun (kalendor a-01-jun { en "1 jun" fr "1 juin" de "1. Juni" } (annual 1 6)))
|
105
|
+
(= kal.a-14-jul (kalendor a-14-jul { en "14 jul" fr "14 jul" de "14. Juli" } (annual 14 7)))
|
106
|
+
(= kal.a-01-aug (kalendor a-01-aug { en "1 aug" fr "1 août" de "1. Aug" } (annual 1 8)))
|
107
|
+
(= kal.a-15-aug (kalendor a-15-aug { en "15 aug" fr "15 août" de "15. Aug" } (annual 15 8)))
|
108
|
+
(= kal.a-01-nov (kalendor a-01-nov { en "1 nov" fr "1 nov" de "1. Nov" } (annual 1 11)))
|
109
|
+
(= kal.a-11-nov (kalendor a-11-nov { en "Armistice Day - 11 nov" fr "Jour de l'Armistice - 11 nov" de "Waffenstillstandstag - 11. Nov" } (annual 11 11)))
|
110
|
+
(= kal.a-25-dec (kalendor a-25-dec { en "25 dec" fr "25 déc" de "25. Dez" } (annual 25 12)))
|
111
|
+
(= kal.a-26-dec (kalendor a-26-dec { en "26 dec" fr "26 déc" de "26. Dez" } (annual 26 12)))
|
112
|
+
|
113
|
+
(= kal.first-monday-may (kalendor first-monday-may { en "First monday May" fr "premier lundi mai" de "Erste Montag May" } (intersect (weekday 1 1) (month 5))))
|
114
|
+
(= kal.first-monday-jun (kalendor first-monday-jun { en "First monday Jun" fr "premier lundi juin" de "Erste Montag Juni" } (intersect (weekday 1 1) (month 6))))
|
115
|
+
(= kal.first-monday-aug (kalendor first-monday-aug { en "First monday Aug" fr "premier lundi août" de "Erste Montag Aug" } (intersect (weekday 1 1) (month 8))))
|
116
|
+
(= kal.last-monday-oct (kalendor last-monday-oct { en "Last monday Oct" fr "dernier lundi oct" de "Letzte Montag Oct" } (intersect (weekday 1 -1) (month 10))))
|
117
|
+
|
118
|
+
(kalendor/public easter
|
119
|
+
{ en "Easter" fr "Pâques" de "Ostern" }
|
88
120
|
(list "2001-04-15" "2002-03-31" "2003-04-20" "2004-04-11" "2005-03-27" "2006-04-16" "2007-04-08" "2008-03-23" "2009-04-12"
|
89
121
|
"2010-04-04" "2011-04-24" "2012-04-08" "2013-03-31" "2014-04-20" "2015-04-05" "2016-03-27" "2017-04-16" "2018-04-01" "2019-04-21"
|
90
122
|
"2020-04-12" "2021-04-04" "2022-04-17" "2023-04-09" "2024-03-31" "2025-04-20"))
|
91
123
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
124
|
+
(kalendor/public ascension-thursday
|
125
|
+
{ en "Ascension Thursday" fr "Jeudi de l'Ascension" de "Himmelfahrtstag" }
|
126
|
+
(list "2000-06-01" "2001-05-24" "2002-05-09" "2003-05-29" "2004-05-20" "2005-05-05" "2006-05-25" "2007-05-17" "2008-05-01"
|
127
|
+
"2009-05-21" "2010-05-13" "2011-06-02" "2012-05-17" "2013-05-09" "2014-05-29" "2015-05-14" "2016-05-05" "2017-05-25"
|
128
|
+
"2018-05-10" "2019-05-30" "2020-05-21" "2021-05-13" "2022-05-26" "2023-05-18" "2024-05-09" "2025-05-29" "2026-05-14"
|
129
|
+
"2027-05-06" "2028-05-25" "2029-05-10" "2030-05-30" "2031-05-22" "2032-05-06" "2033-05-26" "2034-05-18" "2035-05-03"))
|
130
|
+
|
131
|
+
(kalendor/public whit-monday
|
132
|
+
{ en "Whit Monday" fr "Lundi de Pentecôte" de "Pfingstmontag" }
|
133
|
+
(list "2000-06-12" "2001-06-04" "2002-05-20" "2003-06-09" "2004-05-31" "2008-05-12"
|
134
|
+
"2009-06-01" "2010-05-24" "2011-06-13" "2012-05-28" "2013-05-20" "2014-06-09" "2015-05-25" "2016-05-16" "2017-06-05"
|
135
|
+
"2018-05-21" "2019-06-10" "2020-06-01" "2021-05-24" "2022-06-06" "2023-05-29" "2024-05-20" "2025-06-09" "2026-05-25"
|
136
|
+
"2027-05-17" "2028-06-05" "2029-05-21" "2030-06-10" "2031-06-02" "2032-05-17" "2033-06-06" "2034-05-29" "2035-05-14"))
|
137
|
+
|
138
|
+
(mac kalendor/private (place . kal)
|
139
|
+
(w/uniq k
|
140
|
+
`(let ,k (kalendor ,@kal)
|
141
|
+
(hash-set ,place (hash-get ,k 'name) ,k))))
|
142
|
+
|
143
|
+
(assign kalendor/presets {
|
144
|
+
france (fn ()
|
145
|
+
(let france/private {}
|
146
|
+
(kalendor/public france-public-holidays
|
147
|
+
{ en "French public holidays"
|
148
|
+
fr "Jours fériés France"
|
149
|
+
de "Ferien, Frankreich" }
|
150
|
+
(union kal.a-01-jan easter kal.a-01-may kal.a-08-may
|
151
|
+
ascension-thursday whit-monday
|
152
|
+
kal.a-14-jul kal.a-15-aug kal.a-01-nov kal.a-11-nov kal.a-25-dec))
|
153
|
+
|
154
|
+
(kalendor/public france-non-working-days
|
155
|
+
{ en "weekends and public holidays, France"
|
156
|
+
fr "Jours fériés et weekends, France"
|
157
|
+
de "Ferien und Wochenende, Frankreich" }
|
158
|
+
(union weekends (lookup 'france-public-holidays)))
|
159
|
+
|
160
|
+
(kalendor/private france/private
|
161
|
+
october
|
162
|
+
{ en "October school holidays, France"
|
163
|
+
fr "vacances scolaires France, octobre"
|
164
|
+
de "Schulferien France, Oktober" }
|
165
|
+
(union (interval "2015-10-17" "2015-11-01")
|
166
|
+
(interval "2016-10-19" "2016-11-02")
|
167
|
+
(interval "2017-10-21" "2017-11-05")))
|
168
|
+
|
169
|
+
(kalendor/private france/private
|
170
|
+
december
|
171
|
+
{ en "December school holidays, France"
|
172
|
+
fr "vacances scolaires France, décembre"
|
173
|
+
de "Schulferien France, Dezember" }
|
174
|
+
(union (interval "2015-12-19" "2016-01-03")
|
175
|
+
(interval "2016-12-17" "2017-01-02")
|
176
|
+
(interval "2017-12-23" "2018-01-07")))
|
177
|
+
|
178
|
+
(kalendor/private france/private
|
179
|
+
winter/zone-c
|
180
|
+
{ en "Winter school holidays, France, Zone C"
|
181
|
+
fr "vacances scolaires France, hiver, zone c"
|
182
|
+
de "Schulferien France, Winter, Zone C" }
|
183
|
+
(union (interval "2016-02-20" "2016-03-06")
|
184
|
+
(interval "2017-02-04" "2017-02-19")
|
185
|
+
(interval "2018-02-17" "2018-03-04")))
|
186
|
+
|
187
|
+
(kalendor/private france/private
|
188
|
+
winter/zone-b
|
189
|
+
{ en "Winter school holidays, France, Zone B"
|
190
|
+
fr "vacances scolaires France, hiver, zone B"
|
191
|
+
de "Schulferien France, Winter, Zone B" }
|
192
|
+
(union (interval "2016-02-06" "2016-02-21")
|
193
|
+
(interval "2017-02-11" "2017-02-26")
|
194
|
+
(interval "2018-02-24" "2018-03-11")))
|
195
|
+
|
196
|
+
(kalendor/private france/private
|
197
|
+
winter/zone-a
|
198
|
+
{ en "Winter school holidays, France, Zone A"
|
199
|
+
fr "vacances scolaires France, hiver, zone A"
|
200
|
+
de "Schulferien France, Winter, Zone A" }
|
201
|
+
(union (interval "2016-02-13" "2016-02-29")
|
202
|
+
(interval "2017-02-18" "2017-03-05")
|
203
|
+
(interval "2018-02-10" "2018-02-25")))
|
204
|
+
|
205
|
+
(kalendor/private france/private
|
206
|
+
easter/zone-a
|
207
|
+
{ en "Easter school holidays, France, Zone C"
|
208
|
+
fr "vacances scolaires France, Paques, zone c"
|
209
|
+
de "Schulferien France, Ostern, Zone C" }
|
210
|
+
(union (interval "2016-04-16" "2016-05-01")
|
211
|
+
(interval "2017-04-01" "2017-04-17")
|
212
|
+
(interval "2018-04-14" "2018-04-29")))
|
213
|
+
|
214
|
+
(kalendor/private france/private
|
215
|
+
easter/zone-b
|
216
|
+
{ en "Easter school holidays, France, Zone B"
|
217
|
+
fr "vacances scolaires France, Paques, zone B"
|
218
|
+
de "Schulferien France, Ostern, Zone B" }
|
219
|
+
(union (interval "2016-04-02" "2016-04-17")
|
220
|
+
(interval "2017-04-08" "2017-04-23")
|
221
|
+
(interval "2018-04-21" "2018-05-06")))
|
222
|
+
|
223
|
+
(kalendor/private france/private
|
224
|
+
easter/zone-a
|
225
|
+
{ en "Easter school holidays, France, Zone A"
|
226
|
+
fr "vacances scolaires France, Paques, zone A"
|
227
|
+
de "Schulferien France, Ostern, Zone A" }
|
228
|
+
(union (interval "2016-02-13" "2016-02-29")
|
229
|
+
(interval "2017-02-18" "2017-03-05")
|
230
|
+
(interval "2018-02-10" "2018-02-25")))
|
231
|
+
|
232
|
+
(kalendor/private france/private
|
233
|
+
summer
|
234
|
+
{ en "Summer school holidays, France"
|
235
|
+
fr "vacances scolaires France, été"
|
236
|
+
de "Schulferien France, Sommer" }
|
237
|
+
(union (interval "2016-07-04" "2016-08-31")
|
238
|
+
(interval "2017-07-08" "2017-09-03")
|
239
|
+
(interval "2018-07-07" "2018-09-01")))
|
240
|
+
|
241
|
+
(kalendor/public france-school-holidays-zone-c
|
242
|
+
{ en "school holidays, France, zone C"
|
243
|
+
fr "vacances scolaires France, zone C"
|
244
|
+
de "Schulferien France, Zone C" }
|
245
|
+
(union france/private.october
|
246
|
+
france/private.december
|
247
|
+
france/private.winter/zone-c
|
248
|
+
france/private.easter/zone-c
|
249
|
+
france/private.summer))
|
250
|
+
|
251
|
+
(kalendor/public france-school-holidays-zone-b
|
252
|
+
{ en "school holidays, France, zone B"
|
253
|
+
fr "vacances scolaires France, zone B"
|
254
|
+
de "Schulferien France, Zone B" }
|
255
|
+
(union france/private.october
|
256
|
+
france/private.december
|
257
|
+
france/private.winter/zone-b
|
258
|
+
france/private.easter/zone-b
|
259
|
+
france/private.summer))
|
260
|
+
|
261
|
+
(kalendor/public france-school-holidays-zone-a
|
262
|
+
{ en "school holidays, France, zone A"
|
263
|
+
fr "vacances scolaires France, zone A"
|
264
|
+
de "Schulferien France, Zone A" }
|
265
|
+
(union france/private.october
|
266
|
+
france/private.december
|
267
|
+
france/private.winter/zone-a
|
268
|
+
france/private.easter/zone-a
|
269
|
+
france/private.summer))))})
|
270
|
+
|
271
|
+
(def kalendor/install (preset)
|
272
|
+
; install some preset calendars. 'preset must be one of '(france)
|
273
|
+
((or (hash-get kalendor/presets preset) noop)))
|
data/nydp-kalendor.gemspec
CHANGED
@@ -5,7 +5,7 @@ require 'nydp/kalendor/version'
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "nydp-kalendor"
|
7
7
|
spec.version = Nydp::Kalendor::VERSION
|
8
|
-
spec.authors = ["
|
8
|
+
spec.authors = ["Conan Dalton"]
|
9
9
|
spec.email = ["conan@conandalton.net"]
|
10
10
|
spec.summary = %q{nydp integration for Kalendor gem}
|
11
11
|
spec.description = %q{provides functions and macros to simplify date management within nydp}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nydp-kalendor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Conan Dalton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-05-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|