todo_txt/task/
mod.rs

1#[cfg(feature = "extended")]
2mod extended;
3mod list;
4#[cfg(feature = "extended")]
5mod note;
6#[cfg(feature = "extended")]
7mod period;
8#[cfg(feature = "extended")]
9mod recurrence;
10mod simple;
11
12#[cfg(feature = "extended")]
13pub use extended::Extended;
14pub use list::List;
15#[cfg(feature = "extended")]
16pub use note::Note;
17#[cfg(feature = "extended")]
18pub use period::Period;
19#[cfg(feature = "extended")]
20pub use recurrence::Recurrence;
21pub use simple::Simple;
22
23pub trait Task: From<String> + ToString + Clone + Default + AsRef<Simple> {}
24
25impl Task for Simple {}
26
27#[cfg(feature = "extended")]
28impl Task for Extended {}
29
30#[derive(Clone, Copy, Debug)]
31pub(crate) enum Tag {
32    Context,
33    Project,
34    Hashtag,
35}
36
37impl std::fmt::Display for Tag {
38    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
39        let s = match self {
40            Self::Context => "@",
41            Self::Project => "+",
42            Self::Hashtag => "#",
43        };
44
45        f.write_str(s)
46    }
47}