gitql_std/
standard.rs

1use crate::array::*;
2use crate::datetime::*;
3use crate::general::*;
4use crate::number::*;
5use crate::range::*;
6use crate::regex::*;
7use crate::text::*;
8
9use gitql_core::signature::Signature;
10use gitql_core::signature::StandardFunction;
11use std::collections::HashMap;
12use std::sync::OnceLock;
13
14pub fn standard_functions() -> &'static HashMap<&'static str, StandardFunction> {
15    static HASHMAP: OnceLock<HashMap<&'static str, StandardFunction>> = OnceLock::new();
16    HASHMAP.get_or_init(|| {
17        let mut map: HashMap<&'static str, StandardFunction> = HashMap::new();
18        register_std_text_functions(&mut map);
19        register_std_datetime_functions(&mut map);
20        register_std_number_functions(&mut map);
21        register_std_general_functions(&mut map);
22        register_std_regex_functions(&mut map);
23        register_std_array_functions(&mut map);
24        register_std_range_functions(&mut map);
25        map
26    })
27}
28
29pub fn standard_function_signatures() -> HashMap<&'static str, Signature> {
30    let mut map: HashMap<&'static str, Signature> = HashMap::new();
31    register_std_text_function_signatures(&mut map);
32    register_std_datetime_function_signatures(&mut map);
33    register_std_number_function_signatures(&mut map);
34    register_std_general_function_signatures(&mut map);
35    register_std_regex_function_signatures(&mut map);
36    register_std_array_function_signatures(&mut map);
37    register_std_range_function_signatures(&mut map);
38    map
39}