surrealdb_sql/
tokenizer.rs1use std::fmt;
2use std::fmt::Display;
3
4use surrealdb_types::{SqlFormat, ToSql, write_sql};
5
6#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash)]
7#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
8pub enum Tokenizer {
9 Blank,
10 Camel,
11 Class,
12 Punct,
13}
14
15impl Display for Tokenizer {
16 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
17 f.write_str(match self {
18 Self::Blank => "BLANK",
19 Self::Camel => "CAMEL",
20 Self::Class => "CLASS",
21 Self::Punct => "PUNCT",
22 })
23 }
24}
25
26impl ToSql for Tokenizer {
27 fn fmt_sql(&self, f: &mut String, sql_fmt: SqlFormat) {
28 write_sql!(
29 f,
30 sql_fmt,
31 "{}",
32 match self {
33 Self::Blank => "BLANK",
34 Self::Camel => "CAMEL",
35 Self::Class => "CLASS",
36 Self::Punct => "PUNCT",
37 }
38 )
39 }
40}
41
42pub fn write_tokenizers_sql<I>(f: &mut String, sql_fmt: SqlFormat, tokenizers: I)
44where
45 I: IntoIterator<Item = Tokenizer>,
46{
47 for (i, t) in tokenizers.into_iter().enumerate() {
48 if i > 0 {
49 f.push(',');
50 }
51 t.fmt_sql(f, sql_fmt);
52 }
53}