Add a Loopable trait for dust sections.

This commit is contained in:
Tom Alexander
2020-04-28 19:34:52 -04:00
parent c961cf7ab8
commit e5c4ba8c82
4 changed files with 72 additions and 1 deletions

View File

@@ -114,6 +114,7 @@ fn walk_path<'a>(
mod tests {
use super::*;
use crate::parser::Filter;
use crate::renderer::context_element::Loopable;
use crate::renderer::context_element::Renderable;
use crate::renderer::context_element::Walkable;
@@ -172,6 +173,28 @@ mod tests {
}
}
impl Loopable for &str {
fn get_loop_elements(&self) -> Result<Vec<&dyn ContextElement>, RenderError> {
if self.is_empty() {
Ok(Vec::new())
} else {
Ok(vec![self])
}
}
}
impl Loopable for u32 {
fn get_loop_elements(&self) -> Result<Vec<&dyn ContextElement>, RenderError> {
Ok(vec![self])
}
}
impl<I: ContextElement> Loopable for HashMap<&str, I> {
fn get_loop_elements(&self) -> Result<Vec<&dyn ContextElement>, RenderError> {
Ok(vec![self])
}
}
let context: HashMap<&str, &str> =
[("cat", "kitty"), ("dog", "doggy"), ("tiger", "murderkitty")]
.iter()