slash_lang/parser/
priority.rs1use crate::parser::ast::Priority;
2
3pub fn infer_priority(raw: &str) -> Priority {
4 let s = raw.trim_start_matches('/');
5 if s.is_empty() {
6 return Priority::Low;
7 }
8 let has_underscore = s.contains('_');
9 let has_dash = s.contains('-');
10 let has_upper = s.chars().any(|c| c.is_ascii_uppercase());
11 let is_all_upper = s.chars().all(|c| !c.is_ascii_lowercase()) && has_upper;
12 if is_all_upper {
13 return Priority::Max;
14 }
15 if has_underscore {
16 return Priority::Lowest;
17 }
18 if has_dash {
19 return Priority::Low;
20 }
21 if !has_upper {
22 return Priority::Low;
23 }
24 let first = s.chars().next().unwrap();
25 if first.is_ascii_uppercase() {
26 return Priority::High;
27 }
28 Priority::Medium
29}