Parse self-references and add a test for sections.
This commit is contained in:
@@ -58,6 +58,9 @@ pub struct Comment<'a> {
|
||||
value: &'a str,
|
||||
}
|
||||
|
||||
/// A series of keys separated by '.' to reference a variable in the context
|
||||
///
|
||||
/// Special case: If the path is just "." then keys will be an empty vec
|
||||
#[derive(Clone, Debug, PartialEq)]
|
||||
pub struct Path<'a> {
|
||||
pub keys: Vec<&'a str>,
|
||||
@@ -197,7 +200,10 @@ fn key(i: &str) -> IResult<&str, &str> {
|
||||
|
||||
/// A series of keys separated by '.' to reference a variable in the context
|
||||
fn path(i: &str) -> IResult<&str, Path> {
|
||||
map(separated_list1(tag("."), key), |body| Path { keys: body })(i)
|
||||
alt((
|
||||
map(separated_list1(tag("."), key), |body| Path { keys: body }),
|
||||
value(Path { keys: Vec::new() }, tag(".")),
|
||||
))(i)
|
||||
}
|
||||
|
||||
/// Either a literal or a path to a value
|
||||
|
||||
Reference in New Issue
Block a user