1use crate::sql::language::Language;
2use revision::revisioned;
3use serde::{Deserialize, Serialize};
4use std::fmt;
5use std::fmt::Display;
6
7#[derive(Clone, Debug, Eq, PartialEq, PartialOrd, Serialize, Deserialize, Hash)]
8#[revisioned(revision = 1)]
9pub enum Filter {
10 Ascii,
11 EdgeNgram(u16, u16),
12 Lowercase,
13 Ngram(u16, u16),
14 Snowball(Language),
15 Uppercase,
16}
17
18impl Display for Filter {
19 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20 match self {
21 Self::Ascii => f.write_str("ASCII"),
22 Self::EdgeNgram(min, max) => write!(f, "EDGENGRAM({},{})", min, max),
23 Self::Lowercase => f.write_str("LOWERCASE"),
24 Self::Ngram(min, max) => write!(f, "NGRAM({},{})", min, max),
25 Self::Snowball(lang) => write!(f, "SNOWBALL({})", lang),
26 Self::Uppercase => f.write_str("UPPERCASE"),
27 }
28 }
29}