diff options
| author | 2017-08-23 20:42:46 +0200 | |
|---|---|---|
| committer | 2017-08-23 20:42:46 +0200 | |
| commit | e9046c46b7bac87b3f4d89894dd21365360bd3ce (patch) | |
| tree | 51943544c1a960394c593c5d4c50eee6c5a8e2a5 /askama_derive/src | |
| parent | 57a10a789e62be9f55ea1d28610074709015ee0f (diff) | |
| download | askama-e9046c46b7bac87b3f4d89894dd21365360bd3ce.tar.gz askama-e9046c46b7bac87b3f4d89894dd21365360bd3ce.tar.bz2 askama-e9046c46b7bac87b3f4d89894dd21365360bd3ce.zip  | |
Optionally implement Iron's Modifier<Response> for templates
Diffstat (limited to '')
| -rw-r--r-- | askama_derive/src/generator.rs | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/askama_derive/src/generator.rs b/askama_derive/src/generator.rs index 6eb16e8..57d54b1 100644 --- a/askama_derive/src/generator.rs +++ b/askama_derive/src/generator.rs @@ -53,6 +53,9 @@ pub fn generate(ast: &syn::DeriveInput, path: &Path, mut nodes: Vec<Node>) -> St          gen.impl_template(ast, &content);      }      gen.impl_display(ast); +    if cfg!(feature = "iron") { +        gen.impl_modifier_response(ast); +    }      gen.result()  } @@ -618,6 +621,15 @@ impl<'a> Generator<'a> {          self.writeln("}");      } +    // Implement iron's Modifier<Response> if enabled +    fn impl_modifier_response(&mut self, ast: &syn::DeriveInput) { +        self.write_header(ast, "::askama::iron::Modifier<::askama::iron::Response>"); +        self.writeln("fn modify(self, res: &mut ::askama::iron::Response) {"); +        self.writeln("res.body = Some(Box::new(self.render().unwrap().into_bytes()));"); +        self.writeln("}"); +        self.writeln("}"); +    } +      fn result(self) -> String {          self.buf      }  | 
