reactive_graph_std_string/behaviour/entity/string_bool_operation/
function.rs

1use reactive_graph_behaviour_model_impl::entity::EntityBehaviourFactoryCreator;
2use reactive_graph_behaviour_model_impl::entity::EntityBehaviourFunctions;
3use reactive_graph_behaviour_model_impl::entity::EntityBehaviourFunctionsStorage;
4use std::sync::Arc;
5use std::sync::LazyLock;
6use voca_rs::query;
7
8use crate::behaviour::entity::string_bool_operation::StringBoolOperationFactory;
9use reactive_graph_std_string_model::NAMESPACE_STRING;
10
11pub type StringBoolFunction = fn(String) -> bool;
12
13pub const FN_IS_ALPHA: StringBoolFunction = |lhs: String| query::is_alpha(lhs.as_str());
14pub const FN_IS_ALPHA_DIGIT: StringBoolFunction = |lhs: String| query::is_alphadigit(lhs.as_str());
15pub const FN_IS_BLANK: StringBoolFunction = |lhs: String| query::is_blank(lhs.as_str());
16pub const FN_IS_CAMEL_CASE: StringBoolFunction = |lhs: String| query::is_camel_case(lhs.as_str());
17pub const FN_IS_CAPITALIZE: StringBoolFunction = |lhs: String| query::is_capitalize(lhs.as_str());
18pub const FN_IS_DECAPITALIZE: StringBoolFunction = |lhs: String| query::is_decapitalize(lhs.as_str());
19pub const FN_IS_DIGIT: StringBoolFunction = |lhs: String| query::is_digit(lhs.as_str());
20pub const FN_IS_EMPTY: StringBoolFunction = |lhs: String| query::is_empty(lhs.as_str());
21pub const FN_IS_KEBAB_CASE: StringBoolFunction = |lhs: String| query::is_kebab_case(lhs.as_str());
22pub const FN_IS_LOWER_FIRST: StringBoolFunction = |lhs: String| query::is_lower_first(lhs.as_str());
23pub const FN_IS_LOWERCASE: StringBoolFunction = |lhs: String| query::is_lowercase(lhs.as_str());
24pub const FN_IS_NUMERIC: StringBoolFunction = |lhs: String| query::is_numeric(lhs.as_str());
25pub const FN_IS_PASCAL_CASE: StringBoolFunction = |lhs: String| query::is_pascal_case(lhs.as_str());
26pub const FN_IS_SHOUTY_KEBAB_CASE: StringBoolFunction = |lhs: String| query::is_shouty_kebab_case(lhs.as_str());
27pub const FN_IS_SHOUTY_SNAKE_CASE: StringBoolFunction = |lhs: String| query::is_shouty_snake_case(lhs.as_str());
28pub const FN_IS_SNAKE_CASE: StringBoolFunction = |lhs: String| query::is_snake_case(lhs.as_str());
29pub const FN_IS_TITLE_CASE: StringBoolFunction = |lhs: String| query::is_title(lhs.as_str());
30pub const FN_IS_TRAIN_CASE: StringBoolFunction = |lhs: String| query::is_train_case(lhs.as_str());
31pub const FN_IS_UPPER_FIRST: StringBoolFunction = |lhs: String| query::is_upper_first(lhs.as_str());
32pub const FN_IS_UPPERCASE: StringBoolFunction = |lhs: String| query::is_uppercase(lhs.as_str());
33
34const FACTORY_CREATOR: EntityBehaviourFactoryCreator<StringBoolFunction> = |ty, f| Arc::new(StringBoolOperationFactory::new(ty.clone(), f));
35
36pub static STRING_BOOL_OPERATIONS: EntityBehaviourFunctionsStorage<StringBoolFunction> = LazyLock::new(|| {
37    EntityBehaviourFunctions::<StringBoolFunction>::with_namespace(NAMESPACE_STRING, FACTORY_CREATOR)
38        .behaviour("is_alpha", FN_IS_ALPHA)
39        .behaviour("is_alpha_digit", FN_IS_ALPHA_DIGIT)
40        .behaviour("is_blank", FN_IS_BLANK)
41        .behaviour("is_camel_case", FN_IS_CAMEL_CASE)
42        .behaviour("is_capitalize", FN_IS_CAPITALIZE)
43        .behaviour("is_decapitalize", FN_IS_DECAPITALIZE)
44        .behaviour("is_digit", FN_IS_DIGIT)
45        .behaviour("is_empty", FN_IS_EMPTY)
46        .behaviour("is_kebab_case", FN_IS_KEBAB_CASE)
47        .behaviour("is_lower_first", FN_IS_LOWER_FIRST)
48        .behaviour("is_lowercase", FN_IS_LOWERCASE)
49        .behaviour("is_numeric", FN_IS_NUMERIC)
50        .behaviour("is_pascal_case", FN_IS_PASCAL_CASE)
51        .behaviour("is_shouty_kebab_case", FN_IS_SHOUTY_KEBAB_CASE)
52        .behaviour("is_shouty_snake_case", FN_IS_SHOUTY_SNAKE_CASE)
53        .behaviour("is_snake_case", FN_IS_SNAKE_CASE)
54        .behaviour("is_title_case", FN_IS_TITLE_CASE)
55        .behaviour("is_train_case", FN_IS_TRAIN_CASE)
56        .behaviour("is_upper_first", FN_IS_UPPER_FIRST)
57        .behaviour("is_uppercase", FN_IS_UPPERCASE)
58        .get()
59});