codegenr_lib/helpers/
mod.rs

1use 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  //handlebars.register_helper(EACH_WITH_SORT_HELPER, Box::new(EachWithSortHelper));
63
64  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}