1use serde::*;
2use std::cmp::Ordering;
3
4use crate::convert::HebrewDate;
5
6#[derive(Debug, Eq, Copy, Clone, Serialize)]
7pub struct TorahReadingDay {
11 pub(crate) day: HebrewDate,
12 pub(crate) name: TorahReading,
13}
14
15impl TorahReadingDay {
16 #[inline]
17 pub fn day(&self) -> HebrewDate {
18 self.day
19 }
20
21 #[inline]
22 pub fn name(&self) -> TorahReading {
23 self.name
24 }
25}
26
27impl PartialOrd for TorahReadingDay {
28 #[inline]
29 fn partial_cmp(&self, other: &TorahReadingDay) -> Option<Ordering> {
30 Some(self.cmp(other))
31 }
32}
33
34impl Ord for TorahReadingDay {
35 #[inline]
36 fn cmp(&self, other: &TorahReadingDay) -> Ordering {
37 self.day.cmp(&other.day)
38 }
39}
40
41impl PartialEq for TorahReadingDay {
42 #[inline]
43 fn eq(&self, other: &TorahReadingDay) -> bool {
44 self.day == other.day
45 }
46}
47
48#[derive(Eq, PartialEq, Clone, Copy, Serialize, Deserialize)]
49pub enum Location {
50 Israel,
51 Chul,
52}
53
54#[derive(Eq, PartialEq, Debug, Clone, Copy, Serialize, Deserialize)]
56pub enum YomTov {
57 RoshHashanah1,
58 RoshHashanah2,
59 YomKippur,
60 Sukkos1,
61 Sukkos2,
62 Sukkos3,
63 Sukkos4,
64 Sukkos5,
65 Sukkos6,
66 Sukkos7,
67 ShminiAtzeres,
68 SimchasTorah,
69 Pesach1,
70 Pesach2,
71 Pesach3,
72 Pesach4,
73 Pesach5,
74 Pesach6,
75 Pesach7,
76 Pesach8,
77 Shavuos1,
78 Shavuos2,
79}
80
81#[derive(Eq, PartialEq, Debug, Copy, Clone, Serialize, Deserialize)]
82pub enum TorahReading {
83 YomTov(YomTov),
84 Chol(Chol),
85 Shabbos(Parsha),
86 SpecialParsha(SpecialParsha),
87}
88
89#[derive(Eq, PartialEq, Debug, Clone, Copy, Serialize, Deserialize)]
91pub enum SpecialParsha {
92 Shekalim,
93 Zachor,
94 Parah,
95 HaChodesh,
96}
97#[derive(Eq, PartialEq, Debug, Clone, Copy, Serialize, Deserialize)]
99pub enum Chol {
100 TzomGedalia,
101 RoshChodeshCheshvan1,
102 RoshChodeshCheshvan2,
103 Chanukah1,
104 Chanukah2,
105 Chanukah3,
106 Chanukah4,
107 Chanukah5,
108 Chanukah6,
109 Chanukah7,
110 Chanukah8,
111 TenTeves,
112 RoshChodeshShvat,
113 RoshChodeshNissan,
114 RoshChodeshIyar1,
115 RoshChodeshIyar2,
116 RoshChodeshSivan,
117 RoshChodeshTammuz1,
118 RoshChodeshTammuz2,
119 RoshChodeshAv,
120 RoshChodeshElul1,
121 RoshChodeshElul2,
122 RoshChodeshKislev1,
123 RoshChodeshKislev2,
124 RoshChodeshKislev,
125 RoshChodeshTeves1,
126 RoshChodeshTeves2,
127 RoshChodeshTeves,
128 RoshChodeshAdar1,
129 RoshChodeshAdar2,
130 TaanisEsther,
131 Purim,
132 ShushanPurim,
133 RoshChodeshAdarRishon1,
134 RoshChodeshAdarRishon2,
135 RoshChodeshAdarSheni1,
136 RoshChodeshAdarSheni2,
137 SeventeenTammuz,
138 NineAv,
139}
140
141#[derive(Clone, Debug, Eq, PartialEq, Copy, Serialize, Deserialize)]
143pub enum Parsha {
144 Vayelech,
145 Haazinu,
146 Bereishis,
147 Noach,
148 LechLecha,
149 Vayeira,
150 ChayeiSara,
151 Toldos,
152 Vayetzei,
153 Vayishlach,
154 Vayeshev,
155 Miketz,
156 Vayigash,
157 Vayechi,
158 Shemos,
159 Vaeira,
160 Bo,
161 Beshalach,
162 Yisro,
163 Mishpatim,
164 Terumah,
165 Tetzaveh,
166 KiSisa,
167 VayakhelPikudei,
168 Vayakhel,
169 Pikudei,
170 Vayikra,
171 Tzav,
172 Shemini,
173 TazriyaMetzorah,
174 Tazriya,
175 Metzorah,
176 AchareiMosKedoshim,
177 AchareiMos,
178 Kedoshim,
179 Emor,
180 BeharBechukosai,
181 Behar,
182 Bechukosai,
183 Bamidbar,
184 Naso,
185 Behaaloscha,
186 Shlach,
187 Korach,
188 ChukasBalak,
189 Chukas,
190 Balak,
191 Pinchas,
192 MatosMaasei,
193 Matos,
194 Maasei,
195 Devarim,
196 Vaeschanan,
197 Eikev,
198 Reeh,
199 Shoftim,
200 KiSeitzei,
201 KiSavoh,
202 NitzavimVayelech,
203 Nitzavim,
204}