Skip to main content

sqruff_lib_core/dialects/
sets.rs

1#[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}