]> gitweb.factorcode.org Git - factor.git/blob - extra/calendar/holidays/us/us.factor
calendar.holidays: clone timestamps and make holidays mutating.
[factor.git] / extra / calendar / holidays / us / us.factor
1 ! Copyright (C) 2009 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors assocs calendar calendar.holidays
4 calendar.holidays.private combinators combinators.short-circuit
5 fry kernel lexer math namespaces parser sequences
6 vocabs words ;
7 IN: calendar.holidays.us
8
9 SINGLETONS: us us-federal ;
10
11 <PRIVATE
12
13 : adjust-federal-holiday ( timestamp -- timestamp )
14     {
15         { [ dup saturday? ] [ -1 days (time+) ] }
16         { [ dup sunday? ] [ 1 days (time+) ] }
17         [ ]
18     } cond ;
19
20 PRIVATE>
21
22 M: us-federal holidays
23     (holidays) [
24         [ clone ] dip execute( timestamp -- timestamp ) adjust-federal-holiday
25     ] with map ;
26
27 : us-post-office-open? ( timestamp -- ? )
28     { [ sunday? not ] [ us-federal holiday? not ] } 1&& ;
29
30 HOLIDAY: new-years-day january 1 >>day ;
31 HOLIDAY-NAME: new-years-day world "New Year's Day"
32 HOLIDAY-NAME: new-years-day us-federal "New Year's Day"
33
34 HOLIDAY: martin-luther-king-day january 2 monday-of-month ;
35 HOLIDAY-NAME: martin-luther-king-day us-federal "Martin Luther King Day"
36
37 HOLIDAY: inauguration-day january 20 >>day [ dup 4 neg rem + ] change-year ;
38 HOLIDAY-NAME: inauguration-day us "Inauguration Day"
39
40 HOLIDAY: washingtons-birthday february 2 monday-of-month ;
41 HOLIDAY-NAME: washingtons-birthday us-federal "Washington's Birthday"
42
43 HOLIDAY: memorial-day may last-monday-of-month ;
44 HOLIDAY-NAME: memorial-day us-federal "Memorial Day"
45
46 HOLIDAY: independence-day july 4 >>day ;
47 HOLIDAY-NAME: independence-day us-federal "Independence Day"
48
49 HOLIDAY: labor-day september 0 monday-of-month ;
50 HOLIDAY-NAME: labor-day us-federal "Labor Day"
51
52 HOLIDAY: columbus-day october 1 monday-of-month ;
53 HOLIDAY-NAME: columbus-day us-federal "Columbus Day"
54
55 HOLIDAY-NAME: armistice-day us-federal "Veterans Day"
56
57 HOLIDAY: thanksgiving-day november 3 thursday-of-month ;
58 HOLIDAY-NAME: thanksgiving-day us-federal "Thanksgiving Day"
59
60 HOLIDAY: christmas-day december 25 >>day ;
61 HOLIDAY-NAME: christmas-day world "Christmas Day"
62 HOLIDAY-NAME: christmas-day us-federal "Christmas Day"
63
64 HOLIDAY: belly-laugh-day january 24 >>day ;
65
66 HOLIDAY: groundhog-day february 2 >>day ;
67
68 HOLIDAY: lincolns-birthday february 12 >>day ;
69
70 HOLIDAY: valentines-day february 14 >>day ;
71
72 HOLIDAY: st-patricks-day march 17 >>day ;
73
74 HOLIDAY: ash-wednesday easter 46 days time- ;
75
76 ALIAS: first-day-of-lent ash-wednesday
77
78 HOLIDAY: fat-tuesday ash-wednesday 1 days time- ;
79
80 HOLIDAY: good-friday easter 2 days time- ;
81
82 HOLIDAY: tax-day april 15 >>day ;
83
84 HOLIDAY: earth-day april 22 >>day ;
85
86 HOLIDAY: administrative-professionals-day april last-saturday-of-month wednesday ;
87
88 HOLIDAY: cinco-de-mayo may 5 >>day ;
89
90 HOLIDAY: mothers-day may 1 sunday-of-month ;
91
92 HOLIDAY: armed-forces-day may 2 saturday-of-month ;
93
94 HOLIDAY: national-donut-day june 0 friday-of-month ;
95
96 HOLIDAY: flag-day june 14 >>day ;
97
98 HOLIDAY: parents-day july 3 sunday-of-month ;
99
100 HOLIDAY: grandparents-day labor-day 1 weeks time+ ;
101
102 HOLIDAY: patriot-day september 11 >>day ;
103
104 HOLIDAY: stepfamily-day september 16 >>day ;
105
106 HOLIDAY: citizenship-day september 17 >>day ;
107
108 HOLIDAY: bosss-day october 16 >>day ;
109
110 HOLIDAY: sweetest-day october 2 saturday-of-month ;
111
112 HOLIDAY: halloween october 31 >>day ;
113
114 HOLIDAY: election-day november 0 monday-of-month 1 days time+ ;
115
116 HOLIDAY: black-friday thanksgiving-day 1 days time+ ;
117
118 HOLIDAY: pearl-harbor-remembrance-day december 7 >>day ;
119
120 HOLIDAY: new-years-eve december 31 >>day ;