heca_lib/prelude/
location.rs

1use serde::*;
2use std::cmp::Ordering;
3
4use crate::convert::HebrewDate;
5
6#[derive(Debug, Eq, Copy, Clone, Serialize)]
7/// This struct holds a day on which the Torah is read.
8///
9/// You can get the Hebrew Date and the Torah reading.
10pub 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/// Yom Tov, including Rosh Hashana, Yom Kippur and Chol HaMoed
55#[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/// Special Parshas read every winter
90#[derive(Eq, PartialEq, Debug, Clone, Copy, Serialize, Deserialize)]
91pub enum SpecialParsha {
92    Shekalim,
93    Zachor,
94    Parah,
95    HaChodesh,
96}
97/// Possible weekday Torah readings
98#[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/// Weekly Torah Portion
142#[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}