From 292bf7baed7e96ab44085643f960014910835e53 Mon Sep 17 00:00:00 2001 From: Dirkjan Ochtman Date: Wed, 20 Feb 2019 20:02:26 +0100 Subject: Allow referencing self as a variable (fixes #207) --- askama_derive/src/generator.rs | 2 +- testing/tests/vars.rs | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/askama_derive/src/generator.rs b/askama_derive/src/generator.rs index b0630df..8f2866e 100644 --- a/askama_derive/src/generator.rs +++ b/askama_derive/src/generator.rs @@ -1116,7 +1116,7 @@ impl<'a> Generator<'a> { } fn visit_var(&mut self, buf: &mut Buffer, s: &str) -> DisplayWrap { - if self.locals.contains(s) { + if self.locals.contains(s) || s == "self" { buf.write(s); } else { buf.write("self."); diff --git a/testing/tests/vars.rs b/testing/tests/vars.rs index 04f9ff2..da8aef6 100644 --- a/testing/tests/vars.rs +++ b/testing/tests/vars.rs @@ -43,3 +43,17 @@ fn test_let_decl() { }; assert_eq!(t.render().unwrap(), "bar"); } + +#[derive(Template)] +#[template( + source = "{% for v in self.0 %}{{ v }}{% endfor %}", + ext = "txt", + print = "code" +)] +struct SelfIterTemplate(Vec); + +#[test] +fn test_self_iter() { + let t = SelfIterTemplate(vec![1, 2, 3]); + assert_eq!(t.render().unwrap(), "123"); +} -- cgit