aboutsummaryrefslogtreecommitdiffstats
path: root/askama_shared/src/generator.rs
diff options
context:
space:
mode:
Diffstat (limited to 'askama_shared/src/generator.rs')
-rw-r--r--askama_shared/src/generator.rs113
1 files changed, 57 insertions, 56 deletions
diff --git a/askama_shared/src/generator.rs b/askama_shared/src/generator.rs
index fda56e2..82f68ff 100644
--- a/askama_shared/src/generator.rs
+++ b/askama_shared/src/generator.rs
@@ -94,24 +94,25 @@ impl<'a, S: std::hash::BuildHasher> Generator<'a, S> {
self.impl_template(ctx, &mut buf);
self.impl_display(&mut buf);
- if self.integrations.iron {
- self.impl_modifier_response(&mut buf);
- }
- if self.integrations.rocket {
- self.impl_rocket_responder(&mut buf);
- }
+
if self.integrations.actix {
self.impl_actix_web_responder(&mut buf);
}
if self.integrations.gotham {
self.impl_gotham_into_response(&mut buf);
}
- if self.integrations.warp {
- self.impl_warp_reply(&mut buf);
+ if self.integrations.iron {
+ self.impl_iron_modifier_response(&mut buf);
+ }
+ if self.integrations.rocket {
+ self.impl_rocket_responder(&mut buf);
}
if self.integrations.tide {
self.impl_tide_integrations(&mut buf);
}
+ if self.integrations.warp {
+ self.impl_warp_reply(&mut buf);
+ }
buf.buf
}
@@ -202,8 +203,41 @@ impl<'a, S: std::hash::BuildHasher> Generator<'a, S> {
buf.writeln("}");
}
+ // Implement Actix-web's `Responder`.
+ fn impl_actix_web_responder(&mut self, buf: &mut Buffer) {
+ self.write_header(buf, "::actix_web::Responder", None);
+ buf.writeln("type Future = ::askama_actix::futures::Ready<::std::result::Result<::actix_web::HttpResponse, Self::Error>>;");
+ buf.writeln("type Error = ::actix_web::Error;");
+ buf.writeln(
+ "fn respond_to(self, _req: &::actix_web::HttpRequest) \
+ -> Self::Future {",
+ );
+
+ buf.writeln("use ::askama_actix::TemplateIntoResponse;");
+ buf.writeln("::askama_actix::futures::ready(self.into_response())");
+
+ buf.writeln("}");
+ buf.writeln("}");
+ }
+
+ // Implement gotham's `IntoResponse`.
+ fn impl_gotham_into_response(&mut self, buf: &mut Buffer) {
+ self.write_header(buf, "::askama_gotham::IntoResponse", None);
+ buf.writeln(
+ "fn into_response(self, _state: &::askama_gotham::State)\
+ -> ::askama_gotham::Response<::askama_gotham::Body> {",
+ );
+ let ext = match self.input.path.extension() {
+ Some(s) => s.to_str().unwrap(),
+ None => "txt",
+ };
+ buf.writeln(&format!("::askama_gotham::respond(&self, {:?})", ext));
+ buf.writeln("}");
+ buf.writeln("}");
+ }
+
// Implement iron's Modifier<Response> if enabled
- fn impl_modifier_response(&mut self, buf: &mut Buffer) {
+ fn impl_iron_modifier_response(&mut self, buf: &mut Buffer) {
self.write_header(
buf,
"::askama_iron::Modifier<::askama_iron::Response>",
@@ -254,53 +288,6 @@ impl<'a, S: std::hash::BuildHasher> Generator<'a, S> {
buf.writeln("}");
}
- // Implement Actix-web's `Responder`.
- fn impl_actix_web_responder(&mut self, buf: &mut Buffer) {
- self.write_header(buf, "::actix_web::Responder", None);
- buf.writeln("type Future = ::askama_actix::futures::Ready<::std::result::Result<::actix_web::HttpResponse, Self::Error>>;");
- buf.writeln("type Error = ::actix_web::Error;");
- buf.writeln(
- "fn respond_to(self, _req: &::actix_web::HttpRequest) \
- -> Self::Future {",
- );
-
- buf.writeln("use ::askama_actix::TemplateIntoResponse;");
- buf.writeln("::askama_actix::futures::ready(self.into_response())");
-
- buf.writeln("}");
- buf.writeln("}");
- }
-
- // Implement gotham's `IntoResponse`.
- fn impl_gotham_into_response(&mut self, buf: &mut Buffer) {
- self.write_header(buf, "::askama_gotham::IntoResponse", None);
- buf.writeln(
- "fn into_response(self, _state: &::askama_gotham::State)\
- -> ::askama_gotham::Response<::askama_gotham::Body> {",
- );
- let ext = match self.input.path.extension() {
- Some(s) => s.to_str().unwrap(),
- None => "txt",
- };
- buf.writeln(&format!("::askama_gotham::respond(&self, {:?})", ext));
- buf.writeln("}");
- buf.writeln("}");
- }
-
- fn impl_warp_reply(&mut self, buf: &mut Buffer) {
- self.write_header(buf, "::askama_warp::warp::reply::Reply", None);
- buf.writeln("fn into_response(self) -> ::askama_warp::warp::reply::Response {");
- let ext = self
- .input
- .path
- .extension()
- .and_then(|s| s.to_str())
- .unwrap_or("txt");
- buf.writeln(&format!("::askama_warp::reply(&self, {:?})", ext));
- buf.writeln("}");
- buf.writeln("}");
- }
-
fn impl_tide_integrations(&mut self, buf: &mut Buffer) {
let ext = self
.input
@@ -327,6 +314,20 @@ impl<'a, S: std::hash::BuildHasher> Generator<'a, S> {
buf.writeln("}\n}");
}
+ fn impl_warp_reply(&mut self, buf: &mut Buffer) {
+ self.write_header(buf, "::askama_warp::warp::reply::Reply", None);
+ buf.writeln("fn into_response(self) -> ::askama_warp::warp::reply::Response {");
+ let ext = self
+ .input
+ .path
+ .extension()
+ .and_then(|s| s.to_str())
+ .unwrap_or("txt");
+ buf.writeln(&format!("::askama_warp::reply(&self, {:?})", ext));
+ buf.writeln("}");
+ buf.writeln("}");
+ }
+
// Writes header for the `impl` for `TraitFromPathName` or `Template`
// for the given context struct.
fn write_header(