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), + ], + }, + ) + "#); + } }