port over the equals/not equals helpers.
This commit is contained in:
@@ -22,7 +22,7 @@ use std::rc::Rc;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ParametersContext<'a> {
|
||||
params: HashMap<&'a str, BreadcrumbTreeElement<'a>>,
|
||||
params: HashMap<&'a str, (&'a RValue<'a>, BreadcrumbTreeElement<'a>)>,
|
||||
}
|
||||
|
||||
impl<'a> ParametersContext<'a> {
|
||||
@@ -39,7 +39,7 @@ impl<'a> ParametersContext<'a> {
|
||||
// then those are resolved at the time of access rather than
|
||||
// the time of assignment, so we leave them into their
|
||||
// original IntoContextElement state.
|
||||
let rendered_params: HashMap<&'a str, BreadcrumbTreeElement<'a>> = params
|
||||
let rendered_params: HashMap<&'a str, (&'a RValue<'a>, BreadcrumbTreeElement<'a>)> = params
|
||||
.iter()
|
||||
.map(|kvpair| {
|
||||
let k = kvpair.key;
|
||||
@@ -55,7 +55,7 @@ impl<'a> ParametersContext<'a> {
|
||||
Some(BreadcrumbTreeElement::from_borrowed(&kvpair.value))
|
||||
}
|
||||
};
|
||||
v.map(|some_v| (k, some_v))
|
||||
v.map(|some_v| (k, (&kvpair.value, some_v)))
|
||||
})
|
||||
// TODO: Should a None value here be the same as a key not existing, or should we store the Nones?
|
||||
.filter_map(|pair| pair)
|
||||
@@ -65,6 +65,10 @@ impl<'a> ParametersContext<'a> {
|
||||
params: rendered_params,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_original_rvalue(&self, segment: &str) -> Option<&'a RValue<'a>> {
|
||||
self.params.get(segment).map(|(rvalue, _bte)| *rvalue)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> IntoContextElement for ParametersContext<'a> {
|
||||
@@ -81,7 +85,7 @@ impl<'a> Walkable for ParametersContext<'a> {
|
||||
fn walk(&self, segment: &str) -> Result<&dyn IntoContextElement, WalkError> {
|
||||
self.params
|
||||
.get(segment)
|
||||
.map(|bte| bte.borrow())
|
||||
.map(|(_rvalue, bte)| bte.borrow())
|
||||
.ok_or(WalkError::CantWalk)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user