Going extreme: removing all fields and unifying all walk errors.
This commit is contained in:
parent
b20368c586
commit
fcb2f3fc4d
@ -1,11 +1,12 @@
|
||||
use crate::parser::Filter;
|
||||
use crate::renderer::errors::RenderError;
|
||||
use crate::renderer::errors::WalkError;
|
||||
use std::fmt::Debug;
|
||||
|
||||
pub trait ContextElement: Debug + Walkable + Renderable + Loopable {}
|
||||
|
||||
pub trait Walkable {
|
||||
fn walk(&self, segment: &str) -> Result<&dyn ContextElement, RenderError>;
|
||||
fn walk(&self, segment: &str) -> Result<&dyn ContextElement, WalkError>;
|
||||
}
|
||||
|
||||
pub trait Renderable {
|
||||
|
@ -15,15 +15,8 @@ pub enum RenderError<'a> {
|
||||
},
|
||||
}
|
||||
|
||||
pub enum WalkError<'a> {
|
||||
CantWalk {
|
||||
segment: String,
|
||||
elem: &'a dyn ContextElement,
|
||||
},
|
||||
NotFound {
|
||||
path: &'a Vec<&'a str>,
|
||||
breadcrumbs: Vec<&'a dyn ContextElement>,
|
||||
},
|
||||
pub enum WalkError {
|
||||
CantWalk,
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
|
@ -7,6 +7,7 @@ use crate::parser::TemplateElement;
|
||||
use crate::renderer::context_element::ContextElement;
|
||||
use crate::renderer::errors::CompileError;
|
||||
use crate::renderer::errors::RenderError;
|
||||
use crate::renderer::errors::WalkError;
|
||||
use crate::renderer::parameters_context::ParametersContext;
|
||||
use std::collections::HashMap;
|
||||
|
||||
@ -226,7 +227,7 @@ fn walk_path_from_single_level<'a>(
|
||||
let mut output = context;
|
||||
for elem in path.iter() {
|
||||
let new_val = output.walk(elem);
|
||||
if let Err(RenderError::CantWalk { .. }) = new_val {
|
||||
if let Err(WalkError::CantWalk { .. }) = new_val {
|
||||
return Ok(walk_failure);
|
||||
}
|
||||
walk_failure = WalkResult::PartialWalk;
|
||||
|
Loading…
Reference in New Issue
Block a user