sqruff_lib_core/dialects/
sets.rs1#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2pub enum DialectSetKey<'a> {
3 Named(&'a str),
4 BracketPairs,
5 AngleBracketPairs,
6}
7
8impl<'a> DialectSetKey<'a> {
9 pub fn parse(value: &'a str) -> Self {
10 match value {
11 "bracket_pairs" => Self::BracketPairs,
12 "angle_bracket_pairs" => Self::AngleBracketPairs,
13 other => Self::Named(other),
14 }
15 }
16
17 pub fn as_set_name(self) -> Option<&'a str> {
18 match self {
19 Self::Named(name) => Some(name),
20 Self::BracketPairs | Self::AngleBracketPairs => None,
21 }
22 }
23
24 pub const fn as_bracket_set_name(self) -> Option<&'static str> {
25 match self {
26 Self::Named(_) => None,
27 Self::BracketPairs => Some("bracket_pairs"),
28 Self::AngleBracketPairs => Some("angle_bracket_pairs"),
29 }
30 }
31}
32
33#[cfg(test)]
34mod tests {
35 use super::DialectSetKey;
36
37 #[test]
38 fn parses_named_and_bracket_set_keys() {
39 assert_eq!(
40 DialectSetKey::parse("reserved_keywords"),
41 DialectSetKey::Named("reserved_keywords")
42 );
43 assert_eq!(
44 DialectSetKey::parse("bracket_pairs"),
45 DialectSetKey::BracketPairs
46 );
47 assert_eq!(
48 DialectSetKey::parse("angle_bracket_pairs"),
49 DialectSetKey::AngleBracketPairs
50 );
51 }
52}