rocket_include_handlebars/
macros.rs

1/// Used for retrieving and rendering the file you input through the macro `handlebars_resources_initialize!` as a `HandlebarsResponse` instance with rendered HTML. When its `respond_to` method is called, three HTTP headers, **Content-Type**, **Content-Length** and **Etag**, will be automatically added, and the rendered HTML can optionally not be minified.
2#[macro_export]
3macro_rules! handlebars_response {
4    ( $cm:expr, $etag_if_none_match:expr, $name:expr ) => {
5        {
6            use ::std::collections::HashMap;
7
8            let map: HashMap<u8, u8> = HashMap::new();
9
10            $crate::handlebars_response!($cm, $etag_if_none_match, $name, map)
11        }
12    };
13    ( $cm:expr, $etag_if_none_match:expr, $name:expr, $data:expr ) => {
14        $crate::handlebars_response!(enable_minify $cm, $etag_if_none_match, $name, $data)
15    };
16    ( enable_minify $cm:expr, $etag_if_none_match:expr, $name:expr ) => {
17        {
18            use ::std::collections::HashMap;
19
20            let map: HashMap<u8, u8> = HashMap::new();
21
22            $crate::handlebars_response!(enable_minify $cm, $etag_if_none_match, $name, map)
23        }
24    };
25    ( enable_minify $cm:expr, $etag_if_none_match:expr, $name:expr, $data:expr ) => {
26        $cm.build(
27            &$etag_if_none_match,
28            true,
29            $name,
30            &$data,
31        )
32    };
33    ( disable_minify $cm:expr, $etag_if_none_match:expr, $name:expr ) => {
34        {
35            use ::std::collections::HashMap;
36
37            let map: HashMap<u8, u8> = HashMap::new();
38
39            $crate::handlebars_response!(disable_minify $cm, $etag_if_none_match, $name, map)
40        }
41    };
42    ( disable_minify $cm:expr, $etag_if_none_match:expr, $name:expr, $data:expr ) => {
43        $cm.build(
44            &$etag_if_none_match,
45            false,
46            $name,
47            &$data,
48        )
49    };
50    ( auto_minify $cm:expr, $etag_if_none_match:expr, $name:expr ) => {
51        {
52            use ::std::collections::HashMap;
53
54            let map: HashMap<u8, u8> = HashMap::new();
55
56            $crate::handlebars_response!(auto_minify $cm, $etag_if_none_match, $name, map)
57        }
58    };
59    ( auto_minify $cm:expr, $etag_if_none_match:expr, $name:expr, $data:expr ) => {
60        if cfg!(debug_assertions) {
61            handlebars_response!(disable_minify $cm, $etag_if_none_match, $name, $data)
62        } else {
63            handlebars_response!(enable_minify $cm, $etag_if_none_match, $name, $data)
64        }
65    };
66}
67
68/// Used for generating a fairing for handlebars resources.
69#[macro_export]
70macro_rules! handlebars_resources_initializer {
71    ( $($name:expr => $path:expr), * $(,)* ) => {
72        {
73            $crate::HandlebarsResponse::fairing(|handlebars| {
74                $crate::handlebars_resources_initialize!(
75                    handlebars
76                    $(, $name => $path)*
77                );
78            })
79        }
80    };
81    ( $capacity:expr; $($name:expr => $path:expr), * $(,)*  ) => {
82        {
83            $crate::HandlebarsResponse::fairing_cache(|handlebars| {
84                $crate::handlebars_resources_initialize!(
85                    handlebars
86                    $(, $name => $path)*
87                );
88
89                $capacity
90            })
91        }
92    };
93}