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}