|
|
|
@ -20,6 +20,7 @@ use crate::renderer::inline_partial_tree::InlinePartialTreeElement;
|
|
|
|
|
use crate::renderer::iteration_context::IterationContext;
|
|
|
|
|
use crate::renderer::parameters_context::ParametersContext;
|
|
|
|
|
use crate::renderer::walking::walk_path;
|
|
|
|
|
use std::borrow::Borrow;
|
|
|
|
|
use std::collections::HashMap;
|
|
|
|
|
|
|
|
|
|
#[derive(Clone, Debug)]
|
|
|
|
@ -644,11 +645,57 @@ impl<'a> DustRenderer<'a> {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
DustTag::DTHelperSep(parameterized_block) => {}
|
|
|
|
|
DustTag::DTHelperFirst(parameterized_block) => {}
|
|
|
|
|
DustTag::DTHelperLast(parameterized_block) => {}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Ok("".to_owned())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// Read a value from the context tree
|
|
|
|
|
pub fn get<P>(
|
|
|
|
|
&'a self,
|
|
|
|
|
breadcrumbs: &'a Vec<BreadcrumbTreeElement<'a>>,
|
|
|
|
|
name: &Vec<P>,
|
|
|
|
|
) -> Result<IceResult<'a>, WalkError>
|
|
|
|
|
where
|
|
|
|
|
P: Borrow<str>,
|
|
|
|
|
{
|
|
|
|
|
let val =
|
|
|
|
|
walk_path(breadcrumbs, name).map(|ice| ice.into_context_element(self, breadcrumbs));
|
|
|
|
|
match val {
|
|
|
|
|
Ok(Some(ice_result)) => Ok(ice_result),
|
|
|
|
|
Ok(None) => Err(WalkError::CantWalk),
|
|
|
|
|
Err(walk_error) => Err(walk_error),
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// Read a value from the parameters context
|
|
|
|
|
///
|
|
|
|
|
/// Returns None if the key is not present at all
|
|
|
|
|
pub fn tap<P>(
|
|
|
|
|
&'a self,
|
|
|
|
|
breadcrumbs: &'a Vec<BreadcrumbTreeElement<'a>>,
|
|
|
|
|
parameters: &'a ParametersContext<'a>,
|
|
|
|
|
name: &P,
|
|
|
|
|
) -> Option<Result<IceResult<'a>, WalkError>>
|
|
|
|
|
where
|
|
|
|
|
P: Borrow<str>,
|
|
|
|
|
{
|
|
|
|
|
if !parameters.contains_key(name.borrow()) {
|
|
|
|
|
return None;
|
|
|
|
|
}
|
|
|
|
|
let val = parameters
|
|
|
|
|
.walk("key")
|
|
|
|
|
.map(|ice| ice.into_context_element(self, breadcrumbs));
|
|
|
|
|
match val {
|
|
|
|
|
Ok(Some(ice_result)) => Some(Ok(ice_result)),
|
|
|
|
|
Ok(None) => Some(Err(WalkError::CantWalk)),
|
|
|
|
|
Err(walk_error) => Some(Err(walk_error)),
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn new_breadcrumbs_section<'b>(
|
|
|
|
|
&'b self,
|
|
|
|
|
breadcrumbs: &'b Vec<BreadcrumbTreeElement<'b>>,
|
|
|
|
|