From 95dc15f103f46d2e761c8a9759f636c11544d917 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sat, 23 May 2020 23:12:51 -0400 Subject: [PATCH] Update parser to preserve the dot and support paths beginning with a dot. --- src/parser/parser.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/parser/parser.rs b/src/parser/parser.rs index 4c0cfd2..c016e7e 100644 --- a/src/parser/parser.rs +++ b/src/parser/parser.rs @@ -263,7 +263,14 @@ fn key(i: &str) -> IResult<&str, &str> { fn path(i: &str) -> IResult<&str, Path> { alt(( map(separated_list1(tag("."), key), |body| Path { keys: body }), - value(Path { keys: Vec::new() }, tag(".")), + map( + tuple((tag("."), separated_list1(tag("."), key))), + |(dot, mut body)| { + body.insert(0, dot); + Path { keys: body } + }, + ), + map(tag("."), |dot| Path { keys: vec![dot] }), ))(i) } @@ -1210,7 +1217,7 @@ mod tests { contents: Some(Body { elements: vec![TemplateElement::TETag(DustTag::DTReference( Reference { - path: Path { keys: vec![] }, + path: Path { keys: vec!["."] }, filters: vec![] } ))] @@ -1238,7 +1245,7 @@ mod tests { IgnoredWhitespace::StartOfLine("\n") ), TemplateElement::TETag(DustTag::DTReference(Reference { - path: Path { keys: vec![] }, + path: Path { keys: vec!["."] }, filters: vec![] })), TemplateElement::TEIgnoredWhitespace(