1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
#[cfg(feature = "with-filters")]
use filters::filter::Filter;
#[cfg(feature = "with-filters")]
use filters::filter::IntoFilter;
#[cfg(feature = "with-filters")]
use timetype::TimeType;
#[cfg(feature = "with-filters")]
use chrono::Datelike;
#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug)]
pub enum Day {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday,
}
impl Into<::chrono::Weekday> for Day {
fn into(self) -> ::chrono::Weekday {
match self {
Day::Monday => ::chrono::Weekday::Mon,
Day::Tuesday => ::chrono::Weekday::Tue,
Day::Wednesday => ::chrono::Weekday::Wed,
Day::Thursday => ::chrono::Weekday::Thu,
Day::Friday => ::chrono::Weekday::Fri,
Day::Saturday => ::chrono::Weekday::Sat,
Day::Sunday => ::chrono::Weekday::Sun,
}
}
}
#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug)]
pub enum Month {
January,
February,
March,
April,
May,
June,
July,
August,
September,
October,
November,
December,
}
impl Into<u32> for Month {
fn into(self) -> u32 {
match self {
Month::January => 1,
Month::February => 2,
Month::March => 3,
Month::April => 4,
Month::May => 5,
Month::June => 6,
Month::July => 7,
Month::August => 8,
Month::September => 9,
Month::October => 10,
Month::November => 11,
Month::December => 12,
}
}
}
#[cfg(feature = "with-filters")]
pub struct DayFilter(Day);
#[cfg(feature = "with-filters")]
impl Filter<TimeType> for DayFilter {
fn filter(&self, tt: &TimeType) -> bool {
tt.get_moment().map(|mom| mom.weekday() == self.0.clone().into()).unwrap_or(false)
}
}
#[cfg(feature = "with-filters")]
impl IntoFilter<TimeType> for Day {
type IntoFilt = DayFilter;
fn into_filter(self) -> Self::IntoFilt {
DayFilter(self)
}
}
#[cfg(feature = "with-filters")]
pub struct MonthFilter(Month);
#[cfg(feature = "with-filters")]
impl Filter<TimeType> for MonthFilter {
fn filter(&self, tt: &TimeType) -> bool {
tt.get_moment().map(|mom| mom.month() == self.0.clone().into()).unwrap_or(false)
}
}
#[cfg(feature = "with-filters")]
impl IntoFilter<TimeType> for Month {
type IntoFilt = MonthFilter;
fn into_filter(self) -> Self::IntoFilt {
MonthFilter(self)
}
}
|