polars_plan/dsl/function_expr/
cat.rs1use super::*;
2
3#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
4#[cfg_attr(feature = "dsl-schema", derive(schemars::JsonSchema))]
5#[derive(Clone, PartialEq, Debug, Eq, Hash)]
6pub enum CategoricalFunction {
7 GetCategories,
8 #[cfg(feature = "strings")]
9 LenBytes,
10 #[cfg(feature = "strings")]
11 LenChars,
12 #[cfg(feature = "strings")]
13 StartsWith(String),
14 #[cfg(feature = "strings")]
15 EndsWith(String),
16 #[cfg(feature = "strings")]
17 Slice(i64, Option<usize>),
18}
19
20impl Display for CategoricalFunction {
21 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
22 use CategoricalFunction::*;
23 let s = match self {
24 GetCategories => "get_categories",
25 #[cfg(feature = "strings")]
26 LenBytes => "len_bytes",
27 #[cfg(feature = "strings")]
28 LenChars => "len_chars",
29 #[cfg(feature = "strings")]
30 StartsWith(_) => "starts_with",
31 #[cfg(feature = "strings")]
32 EndsWith(_) => "ends_with",
33 #[cfg(feature = "strings")]
34 Slice(_, _) => "slice",
35 };
36 write!(f, "cat.{s}")
37 }
38}
39
40impl From<CategoricalFunction> for FunctionExpr {
41 fn from(func: CategoricalFunction) -> Self {
42 FunctionExpr::Categorical(func)
43 }
44}