1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
9pub struct Dialect {
10 name: &'static str,
11}
12
13impl Dialect {
14 #[must_use]
16 pub const fn name(self) -> &'static str {
17 self.name
18 }
19}
20
21pub const DIALECTS: &[Dialect] = &[Dialect { name: "duckdb" }];
23
24#[must_use]
26pub fn dialect_named(name: &str) -> Option<Dialect> {
27 DIALECTS.iter().copied().find(|dialect| dialect.name.eq_ignore_ascii_case(name))
28}
29
30#[cfg(test)]
31mod tests {
32 use super::{DIALECTS, dialect_named};
33
34 #[test]
35 fn the_vendored_grammar_is_the_one_registered_dialect() {
36 assert_eq!(DIALECTS.len(), 1);
37 assert_eq!(dialect_named("DUCKDB").map(|dialect| dialect.name()), Some("duckdb"));
38 assert_eq!(dialect_named("cypher"), None);
39 }
40}