aboutsummaryrefslogtreecommitdiffstats
path: root/askama_derive/src/generator.rs
diff options
context:
space:
mode:
authorLibravatar Guillaume Gomez <guillaume1.gomez@gmail.com>2023-03-06 21:51:49 +0100
committerLibravatar Dirkjan Ochtman <dirkjan@ochtman.nl>2023-03-09 13:35:00 +0100
commitca083f59fcf151725b4f86719674a153fded4eb5 (patch)
tree0e1d95b151204e87e0ddca0c2b233d6f36f12ddd /askama_derive/src/generator.rs
parentc795edfd8de5b77f27ad6c8a25568213dcc09bb6 (diff)
downloadaskama-ca083f59fcf151725b4f86719674a153fded4eb5.tar.gz
askama-ca083f59fcf151725b4f86719674a153fded4eb5.tar.bz2
askama-ca083f59fcf151725b4f86719674a153fded4eb5.zip
Fix handling of trailing whitespace characters
Diffstat (limited to 'askama_derive/src/generator.rs')
-rw-r--r--askama_derive/src/generator.rs12
1 files changed, 8 insertions, 4 deletions
diff --git a/askama_derive/src/generator.rs b/askama_derive/src/generator.rs
index d8093c3..cad7909 100644
--- a/askama_derive/src/generator.rs
+++ b/askama_derive/src/generator.rs
@@ -686,6 +686,11 @@ impl<'a> Generator<'a> {
}
if AstLevel::Top == level {
+ // Handle any pending whitespace.
+ if self.next_ws.is_some() {
+ self.flush_ws(Ws(Some(self.skip_ws.into()), None));
+ }
+
size_hint += self.write_buf_writable(buf)?;
}
Ok(size_hint)
@@ -1247,9 +1252,7 @@ impl<'a> Generator<'a> {
assert!(self.next_ws.is_none());
if !lws.is_empty() {
match self.skip_ws {
- WhitespaceHandling::Suppress => {
- self.skip_ws = WhitespaceHandling::Preserve;
- }
+ WhitespaceHandling::Suppress => {}
_ if val.is_empty() => {
assert!(rws.is_empty());
self.next_ws = Some(lws);
@@ -1260,12 +1263,13 @@ impl<'a> Generator<'a> {
.push(Writable::Lit(match lws.contains('\n') {
true => "\n",
false => " ",
- }))
+ }));
}
}
}
if !val.is_empty() {
+ self.skip_ws = WhitespaceHandling::Preserve;
self.buf_writable.push(Writable::Lit(val));
}