sqruff_lib_core/dialects/
init.rs

1use strum::IntoEnumIterator;
2use strum_macros::AsRefStr;
3
4#[derive(
5    strum_macros::EnumString,
6    strum_macros::EnumIter,
7    AsRefStr,
8    Debug,
9    Clone,
10    Copy,
11    Default,
12    Ord,
13    PartialOrd,
14    Eq,
15    PartialEq,
16    Hash,
17)]
18#[strum(serialize_all = "snake_case")]
19pub enum DialectKind {
20    #[default]
21    Ansi,
22    Athena,
23    Bigquery,
24    Clickhouse,
25    Databricks,
26    Duckdb,
27    Postgres,
28    Redshift,
29    Snowflake,
30    Sparksql,
31    Sqlite,
32    Trino,
33}
34
35/// Generate a readout of available dialects.
36pub fn dialect_readout() -> Vec<String> {
37    DialectKind::iter()
38        .map(|x| x.as_ref().to_string())
39        .collect()
40}
41
42#[cfg(test)]
43mod tests {
44    #[test]
45    fn dialect_readout_is_alphabetically_sorted() {
46        let readout = super::dialect_readout();
47
48        let mut sorted = readout.clone();
49        sorted.sort();
50
51        assert_eq!(readout, sorted);
52    }
53}