codegenr_lib/helpers/
mod.rs1use handlebars::Handlebars;
2use serde_json::Value;
3use std::collections::HashMap;
4
5pub mod handlebars_ext;
6pub mod string_ext;
7
8mod cases;
9mod debug;
10mod distinct;
11mod empty;
12mod equals;
13mod getset;
14mod json;
15mod math;
16mod openapi3;
17mod params;
18mod regex;
19mod strings;
20
21pub use {
22 self::regex::*, cases::*, debug::*, distinct::*, empty::*, equals::*, getset::*, json::*, math::*, openapi3::*, params::*, strings::*,
23};
24
25pub fn handlebars_setup(handlebars: &mut Handlebars, global_params: HashMap<String, Value>) {
26 #[cfg(debug_assertions)]
27 {
28 handlebars.set_dev_mode(true);
29 }
30 handlebars.register_escape_fn(handlebars::no_escape);
31 handlebars.register_helper(DEBUG, Box::new(DebugHelper));
32 handlebars.register_helper(DEBUG_CTX, Box::new(DebugCtxHelper));
33 handlebars.register_helper(DISTINCTIVE, Box::new(DistinctiveHelper::default()));
34 handlebars.register_helper(IF_EMPTY_HELPER, Box::new(IfEmptyHelper));
35 handlebars.register_helper(IF_NOT_EMPTY_HELPER, Box::new(IfNotEmptyHelper));
36 handlebars.register_helper(IF_EQUALS_HELPER, Box::new(IfEqualsHelper));
37 handlebars.register_helper(IF_NOT_EQUALS_HELPER, Box::new(IfNotEqualsHelper));
38 handlebars.register_helper(JSON_HELPER, Box::new(JsonHelper));
39 handlebars.register_helper(HEX, Box::new(Hex));
40 handlebars.register_helper(TRIM_HELPER, Box::new(TrimHelper));
41 handlebars.register_helper(TRIM_START_HELPER, Box::new(TrimStartHelper));
42 handlebars.register_helper(TRIM_END_HELPER, Box::new(TrimEndHelper));
43 handlebars.register_helper(UPPERCASE_HELPER, Box::new(UppercaseHelper));
44 handlebars.register_helper(LOWERCASE_HELPER, Box::new(LowercaseHelper));
45 handlebars.register_helper(UPPERCASE_FIRST_LETTER_HELPER, Box::new(UppercaseFirstLetterHelper));
46 handlebars.register_helper(LOWERCASE_FIRST_LETTER_HELPER, Box::new(LowercaseFirstLetterHelper));
47 handlebars.register_helper(PASCAL_CASE_HELPER, Box::new(PascalcaseHelper));
48 handlebars.register_helper(SNAKE_CASE_HELPER, Box::new(SnakecaseHelper));
49 handlebars.register_helper(CAMEL_CASE_HELPER, Box::new(CamelcaseHelper));
50 handlebars.register_helper(SPLIT_GET_FIRST_HELPER, Box::new(SplitGetFirstHelper));
51 handlebars.register_helper(SPLIT_GET_LAST_HELPER, Box::new(SplitGetLastHelper));
52 handlebars.register_helper(START_WITH_HELPER, Box::new(StartWithHelper));
53 handlebars.register_helper(WITH_MATCHING_HELPER, Box::new(WithMatchingHelper));
54 handlebars.register_helper(IF_ARRAY_CONTAINS, Box::new(IfArrayContainsHelper));
55 handlebars.register_helper(TRIM_BLOCK_HELPER, Box::new(TrimBlockHelper));
56 handlebars.register_helper(TRIM_BLOCK_START_HELPER, Box::new(TrimBlockStartHelper));
57 handlebars.register_helper(TRIM_BLOCK_END_HELPER, Box::new(TrimBlockEndHelper));
58 handlebars.register_helper(ONE_LINE_HELPER, Box::new(OneLineHelper));
59 handlebars.register_helper(NO_EMPTY_LINES_HELPER, Box::new(NoEmptyLinesHelper));
60 handlebars.register_helper(REGEX_EXTRACT_HELPER, Box::new(RegexExtractHelper));
61 handlebars.register_helper(REGEX_TRANSFORM_HELPER, Box::new(RegexTransformHelper));
62 let map = Default::default();
65 handlebars.register_helper(GET_HELPER, Box::new(GetHelper::new(&map)));
66 handlebars.register_helper(SET_HELPER, Box::new(SetHelper::new(&map)));
67 handlebars.register_helper(WITH_SET_HELPER, Box::new(WithSetHelper::new(&map)));
68 handlebars.register_helper(IF_SET_HELPER, Box::new(IfGetHelper::new(&map)));
69 handlebars.register_helper(CLEAR_HELPER, Box::new(ClearHelper::new(&map)));
70
71 handlebars.register_helper(IS_OAPI3_PARAM_REQUIRED, Box::new(IsOApi3ParamRequiredHelper));
72 handlebars.register_helper(IS_OAPI3_PROP_REQUIRED, Box::new(IsOApi3PropRequiredHelper));
73
74 handlebars.register_helper(GLOBAL_PARAMETERS_HELPER, Box::new(GlobalParameterHelper::new(global_params)));
75}
76
77pub fn exec_template(json: serde_json::Value, template: &str) -> String {
78 let mut h = Handlebars::new();
79 handlebars_setup(&mut h, Default::default());
80 h.register_template_string("test", template).expect("Could not register template.");
81 h.render("test", &json).expect("Template render returned an error.")
82}
83
84pub fn exec_template_with_global_params(json: serde_json::Value, template: &str, global_params: HashMap<String, Value>) -> String {
85 let mut h = Handlebars::new();
86 handlebars_setup(&mut h, global_params);
87 h.register_template_string("test", template).expect("Could not register template.");
88 h.render("test", &json).expect("Template render returned an error.")
89}