nydp-kalendor 0.0.1 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|