From 145d305c94c234782e0b13b53267d1f119fe739c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20M=C3=BCller?= Date: Sun, 15 Mar 2026 13:36:34 +0100 Subject: [PATCH] Add parsing of '.' (dot) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marcel Müller --- src/lexer/mod.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/lexer/mod.rs b/src/lexer/mod.rs index 6fb66a2..277f3e3 100644 --- a/src/lexer/mod.rs +++ b/src/lexer/mod.rs @@ -239,6 +239,7 @@ pub enum TokenOperator { Lesser, LesserOrEqual, QuestionMark, + Dot, } #[derive(Debug, Copy, Clone, PartialEq, Eq)] @@ -569,6 +570,7 @@ fn parse_operator<'input>(input: &mut Input<'input>) -> PResult<'input, Template cut_err(fail), )), '?' => empty.value(TokenOperator::QuestionMark), + '.' => empty.value(TokenOperator::Dot), _ => fail, }, ) @@ -930,4 +932,28 @@ mod tests { ) "#); } + + #[test] + fn parse_dot() { + let input = "{{= foo?.bar }}"; + let output = parse(input.into()); + + insta::assert_debug_snapshot!(output, @r#" + Ok( + ParsedTemplate { + tokens: [ + [LeftDelim]"{{" (0..2), + [WantsOutput]"=" (2..3), + [Whitespace]" " (3..4), + [Ident]"foo" (4..7), + [Operator(QuestionMark)]"?" (7..8), + [Operator(Dot)]"." (8..9), + [Ident]"bar" (9..12), + [Whitespace]" " (12..13), + [RightDelim]"}}" (13..15), + ], + }, + ) + "#); + } }