todo_tree_core/
priority.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
4pub enum Priority {
5 Low,
6 Medium,
7 High,
8 Critical,
9}
10
11impl Priority {
12 pub fn from_tag(tag: &str) -> Self {
13 match tag.to_uppercase().as_str() {
14 "BUG" | "FIXME" | "ERROR" => Priority::Critical,
15 "HACK" | "WARN" | "WARNING" | "FIX" => Priority::High,
16 "TODO" | "WIP" | "MAYBE" => Priority::Medium,
17 "NOTE" | "XXX" | "INFO" | "DOCS" | "PERF" | "TEST" | "IDEA" => Priority::Low,
18 _ => Priority::Medium,
19 }
20 }
21
22 pub fn display_name(&self) -> &'static str {
23 match self {
24 Priority::Critical => "Critical",
25 Priority::High => "High",
26 Priority::Medium => "Medium",
27 Priority::Low => "Low",
28 }
29 }
30}
31
32impl std::fmt::Display for Priority {
33 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
34 write!(f, "{}", self.display_name())
35 }
36}