|
|
|
@ -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
|
|
|
|
|