diff options
author | René Kijewski <kijewski@library.vetmed.fu-berlin.de> | 2022-01-07 01:06:35 +0100 |
---|---|---|
committer | Dirkjan Ochtman <dirkjan@ochtman.nl> | 2022-01-07 13:18:03 +0100 |
commit | a9aebf82fbb59a0323c78c4c248eaaafab1ab00f (patch) | |
tree | 696ce06be753e35efe9d814c14ec42c4b0f8f829 /askama_shared | |
parent | e7fb11ecb9278b946fffd7e6c9f82c29e5b62c94 (diff) | |
download | askama-a9aebf82fbb59a0323c78c4c248eaaafab1ab00f.tar.gz askama-a9aebf82fbb59a0323c78c4c248eaaafab1ab00f.tar.bz2 askama-a9aebf82fbb59a0323c78c4c248eaaafab1ab00f.zip |
Determine Content-Type during compilation
Diffstat (limited to '')
-rw-r--r-- | askama_shared/src/generator.rs | 4 | ||||
-rw-r--r-- | askama_shared/src/input.rs | 6 |
2 files changed, 10 insertions, 0 deletions
diff --git a/askama_shared/src/generator.rs b/askama_shared/src/generator.rs index 5c6303c..cd18819 100644 --- a/askama_shared/src/generator.rs +++ b/askama_shared/src/generator.rs @@ -165,6 +165,10 @@ impl<'a, S: std::hash::BuildHasher> Generator<'a, S> { buf.writeln(&format!("{}", size_hint))?; buf.writeln(";")?; + buf.writeln("const MIME_TYPE: &'static ::std::primitive::str = ")?; + buf.writeln(&format!("{:?}", &self.input.mime_type))?; + buf.writeln(";")?; + buf.writeln("}")?; Ok(()) } diff --git a/askama_shared/src/input.rs b/askama_shared/src/input.rs index a679461..17410ed 100644 --- a/askama_shared/src/input.rs +++ b/askama_shared/src/input.rs @@ -14,6 +14,7 @@ pub struct TemplateInput<'a> { pub print: Print, pub escaper: &'a str, pub ext: Option<String>, + pub mime_type: String, pub parent: Option<&'a syn::Type>, pub path: PathBuf, } @@ -180,6 +181,10 @@ impl TemplateInput<'_> { CompileError::String(format!("no escaper defined for extension '{}'", escaping,)) })?; + let mime_type = + extension_to_mime_type(ext_default_to_path(ext.as_deref(), &path).unwrap_or("txt")) + .to_string(); + Ok(TemplateInput { ast, config, @@ -188,6 +193,7 @@ impl TemplateInput<'_> { print, escaper, ext, + mime_type, parent, path, }) |