diff --git a/src/renderer/parameters_context.rs b/src/renderer/parameters_context.rs index 93d66ad..c92c7a7 100644 --- a/src/renderer/parameters_context.rs +++ b/src/renderer/parameters_context.rs @@ -17,6 +17,7 @@ use crate::renderer::WalkError; use crate::renderer::Walkable; use std::cmp::Ordering; use std::collections::HashMap; +use std::rc::Rc; #[derive(Debug)] pub struct ParametersContext<'a> { @@ -39,24 +40,18 @@ impl<'a> IntoContextElement for RValue<'a> { renderer: &DustRenderer, breadcrumbs: Option<&'b BreadcrumbTree<'b>>, ) -> Option> { - todo!() - // match self { - // RValue::RVLiteral(owned_literal) => Some(owned_literal), - // RValue::RVPath(path) => walk_path(breadcrumbs, &path.keys) - // .map(|ice| ice.into_context_element(renderer, breadcrumbs)) - // .ok() - // .flatten(), - // RValue::RVTemplate(template) => { - // // TODO - // // renderer - // // .render_partial_name(template, breadcrumbs) - // // .map(|rendered| OwnedLiteral::LString(rendered)) - // // .ok() - // // .as_ref() - // // .map(|l| l as _) - // todo!() - // } - // } + match self { + RValue::RVLiteral(owned_literal) => Some(IceResult::Borrowed(owned_literal)), + RValue::RVPath(path) => walk_path(breadcrumbs, &path.keys) + .map(|ice| ice.into_context_element(renderer, breadcrumbs)) + .ok() + .flatten(), + RValue::RVTemplate(template) => renderer + .render_partial_name(template, breadcrumbs) + .map(|rendered| OwnedLiteral::LString(rendered)) + .ok() + .map(|owned_literal| IceResult::Owned(Rc::new(owned_literal))), + } } }