1mod error;
2mod handler;
3mod helpers;
4#[cfg(feature = "markdown")]
5mod markdown;
6mod scripting;
7mod styling;
8mod templating;
9
10pub use error::*;
11
12use quokka_state::ProvideStateRef;
13pub use scripting::Scripting;
14pub use styling::Styling;
15pub use templating::{AliasedEmbed, Templating};
16
17pub use handler::add_routes;
18
19pub trait TemplatingStateExt {
21 fn templating(&mut self) -> &mut Templating;
22
23 fn styling(&mut self) -> &mut Styling;
24
25 fn scripting(&mut self) -> &mut Scripting;
26
27 fn register_templates<E: rust_embed::Embed + 'static>(&mut self) -> Result<()>;
29
30 fn register_templates_aliased<E: rust_embed::Embed + 'static>(&mut self) -> Result<()>;
32
33 fn register_inline_template(&mut self, name: &str, template: &str) -> Result<()>;
35
36 fn register_helper<H: handlebars::HelperDef + Send + Sync + 'static, B: Into<Box<H>>>(
38 &mut self,
39 name: &str,
40 helper: B,
41 );
42
43 fn register_styles<E: rust_embed::RustEmbed + Send + Sync + 'static>(&mut self);
45
46 fn add_merged_style(&mut self, path: &str);
48
49 fn add_merged_style_group(&mut self, group: &str, path: &str);
51
52 fn register_scripts<E: rust_embed::RustEmbed + Send + Sync + 'static>(&mut self);
54
55 fn add_merged_script(&mut self, script: &str);
57
58 fn add_merged_script_group(&mut self, group: &str, script: &str);
60}
61
62#[cfg(feature = "quokka-pouch")]
63mod pouch;
64
65#[cfg(feature = "quokka-pouch")]
66pub use pouch::*;
67
68impl<S> TemplatingStateExt for S
69where
70 S: Send + Sync + Clone + 'static,
71 S: ProvideStateRef<Templating> + ProvideStateRef<Styling> + ProvideStateRef<Scripting>,
72{
73 fn templating(&mut self) -> &mut Templating {
74 self.provide_mut()
75 }
76
77 fn styling(&mut self) -> &mut Styling {
78 self.provide_mut()
79 }
80
81 fn scripting(&mut self) -> &mut Scripting {
82 self.provide_mut()
83 }
84
85 fn register_templates<E: rust_embed::Embed + 'static>(&mut self) -> Result<()> {
86 self.templating().register_embedded_templates::<E>()
87 }
88
89 fn register_templates_aliased<E: rust_embed::Embed + 'static>(&mut self) -> Result<()> {
90 self.templating()
91 .register_embedded_templates_aliased_partials::<E>()
92 }
93
94 fn register_inline_template(&mut self, name: &str, template: &str) -> Result<()> {
95 self.templating().register_inline_template(name, template)
96 }
97
98 fn register_helper<H: handlebars::HelperDef + Send + Sync + 'static, B: Into<Box<H>>>(
99 &mut self,
100 name: &str,
101 helper: B,
102 ) {
103 self.templating().register_helper(name, helper);
104 }
105
106 fn register_styles<E: rust_embed::RustEmbed + Send + Sync + 'static>(&mut self) {
107 self.styling().register_embedded_styles::<E>();
108 }
109
110 fn add_merged_style(&mut self, path: &str) {
111 self.styling().add_merged_style(path);
112 }
113
114 fn add_merged_style_group(&mut self, group: &str, path: &str) {
115 self.styling().add_merged_style_group(group, path);
116 }
117
118 fn register_scripts<E: rust_embed::RustEmbed + Send + Sync + 'static>(&mut self) {
119 self.scripting().register_embedded_scripts::<E>();
120 }
121
122 fn add_merged_script(&mut self, script: &str) {
123 self.scripting().add_merged_script(script);
124 }
125
126 fn add_merged_script_group(&mut self, group: &str, script: &str) {
127 self.scripting().add_merged_script_group(group, script);
128 }
129}