Integrate new_breadcrumbs into the helpers.
This commit is contained in:
parent
400602124e
commit
83623897af
@ -110,6 +110,7 @@ impl<'a> DustRenderer<'a> {
|
||||
Ok(output)
|
||||
}
|
||||
|
||||
/// For rendering a dynamic partial's name
|
||||
fn render_partial_name(
|
||||
&'a self,
|
||||
body: &'a Vec<PartialNameElement>,
|
||||
@ -324,6 +325,12 @@ impl<'a> DustRenderer<'a> {
|
||||
};
|
||||
}
|
||||
DustTag::DTHelperEquals(parameterized_block) => {
|
||||
let new_breadcrumbs = Self::new_breadcrumbs(
|
||||
breadcrumbs,
|
||||
None,
|
||||
¶meterized_block.explicit_context,
|
||||
None,
|
||||
);
|
||||
let param_map: HashMap<&str, &RValue<'a>> =
|
||||
Self::get_rval_map(¶meterized_block.params);
|
||||
// Special case: when comparing two RVPaths, if the
|
||||
@ -334,7 +341,11 @@ impl<'a> DustRenderer<'a> {
|
||||
return match ¶meterized_block.contents {
|
||||
None => Ok("".to_owned()),
|
||||
Some(body) => {
|
||||
let rendered_content = self.render_body(body, breadcrumbs, blocks)?;
|
||||
let rendered_content = self.render_body(
|
||||
body,
|
||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||
blocks,
|
||||
)?;
|
||||
Ok(rendered_content)
|
||||
}
|
||||
};
|
||||
@ -348,21 +359,28 @@ impl<'a> DustRenderer<'a> {
|
||||
let right_side: Result<&dyn ContextElement, WalkError> =
|
||||
Self::get_rval(breadcrumbs, ¶m_map, "value")
|
||||
.unwrap_or(Err(WalkError::CantWalk));
|
||||
|
||||
if left_side == right_side {
|
||||
return self.render_maybe_body(
|
||||
¶meterized_block.contents,
|
||||
breadcrumbs,
|
||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||
blocks,
|
||||
);
|
||||
} else {
|
||||
return self.render_maybe_body(
|
||||
¶meterized_block.else_contents,
|
||||
breadcrumbs,
|
||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||
blocks,
|
||||
);
|
||||
}
|
||||
}
|
||||
DustTag::DTHelperNotEquals(parameterized_block) => {
|
||||
let new_breadcrumbs = Self::new_breadcrumbs(
|
||||
breadcrumbs,
|
||||
None,
|
||||
¶meterized_block.explicit_context,
|
||||
None,
|
||||
);
|
||||
let param_map: HashMap<&str, &RValue<'a>> =
|
||||
Self::get_rval_map(¶meterized_block.params);
|
||||
// Special case: when comparing two RVPaths, if the
|
||||
@ -373,7 +391,11 @@ impl<'a> DustRenderer<'a> {
|
||||
return match ¶meterized_block.else_contents {
|
||||
None => Ok("".to_owned()),
|
||||
Some(body) => {
|
||||
let rendered_content = self.render_body(body, breadcrumbs, blocks)?;
|
||||
let rendered_content = self.render_body(
|
||||
body,
|
||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||
blocks,
|
||||
)?;
|
||||
Ok(rendered_content)
|
||||
}
|
||||
};
|
||||
@ -390,18 +412,24 @@ impl<'a> DustRenderer<'a> {
|
||||
if left_side != right_side {
|
||||
return self.render_maybe_body(
|
||||
¶meterized_block.contents,
|
||||
breadcrumbs,
|
||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||
blocks,
|
||||
);
|
||||
} else {
|
||||
return self.render_maybe_body(
|
||||
¶meterized_block.else_contents,
|
||||
breadcrumbs,
|
||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||
blocks,
|
||||
);
|
||||
}
|
||||
}
|
||||
DustTag::DTHelperGreaterThan(parameterized_block) => {
|
||||
let new_breadcrumbs = Self::new_breadcrumbs(
|
||||
breadcrumbs,
|
||||
None,
|
||||
¶meterized_block.explicit_context,
|
||||
None,
|
||||
);
|
||||
let param_map: HashMap<&str, &RValue<'a>> =
|
||||
Self::get_rval_map(¶meterized_block.params);
|
||||
let left_side: Result<&dyn ContextElement, WalkError> =
|
||||
@ -416,7 +444,7 @@ impl<'a> DustRenderer<'a> {
|
||||
(Err(_), _) | (_, Err(_)) => {
|
||||
return self.render_maybe_body(
|
||||
¶meterized_block.else_contents,
|
||||
breadcrumbs,
|
||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||
blocks,
|
||||
)
|
||||
}
|
||||
@ -424,13 +452,13 @@ impl<'a> DustRenderer<'a> {
|
||||
if left_side_unwrapped > right_side_unwrapped {
|
||||
return self.render_maybe_body(
|
||||
¶meterized_block.contents,
|
||||
breadcrumbs,
|
||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||
blocks,
|
||||
);
|
||||
} else {
|
||||
return self.render_maybe_body(
|
||||
¶meterized_block.else_contents,
|
||||
breadcrumbs,
|
||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||
blocks,
|
||||
);
|
||||
}
|
||||
@ -438,6 +466,12 @@ impl<'a> DustRenderer<'a> {
|
||||
}
|
||||
}
|
||||
DustTag::DTHelperGreaterThanOrEquals(parameterized_block) => {
|
||||
let new_breadcrumbs = Self::new_breadcrumbs(
|
||||
breadcrumbs,
|
||||
None,
|
||||
¶meterized_block.explicit_context,
|
||||
None,
|
||||
);
|
||||
let param_map: HashMap<&str, &RValue<'a>> =
|
||||
Self::get_rval_map(¶meterized_block.params);
|
||||
let left_side: Result<&dyn ContextElement, WalkError> =
|
||||
@ -452,7 +486,7 @@ impl<'a> DustRenderer<'a> {
|
||||
(Err(_), _) | (_, Err(_)) => {
|
||||
return self.render_maybe_body(
|
||||
¶meterized_block.else_contents,
|
||||
breadcrumbs,
|
||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||
blocks,
|
||||
)
|
||||
}
|
||||
@ -460,13 +494,13 @@ impl<'a> DustRenderer<'a> {
|
||||
if left_side_unwrapped >= right_side_unwrapped {
|
||||
return self.render_maybe_body(
|
||||
¶meterized_block.contents,
|
||||
breadcrumbs,
|
||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||
blocks,
|
||||
);
|
||||
} else {
|
||||
return self.render_maybe_body(
|
||||
¶meterized_block.else_contents,
|
||||
breadcrumbs,
|
||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||
blocks,
|
||||
);
|
||||
}
|
||||
@ -474,6 +508,12 @@ impl<'a> DustRenderer<'a> {
|
||||
}
|
||||
}
|
||||
DustTag::DTHelperLessThan(parameterized_block) => {
|
||||
let new_breadcrumbs = Self::new_breadcrumbs(
|
||||
breadcrumbs,
|
||||
None,
|
||||
¶meterized_block.explicit_context,
|
||||
None,
|
||||
);
|
||||
let param_map: HashMap<&str, &RValue<'a>> =
|
||||
Self::get_rval_map(¶meterized_block.params);
|
||||
let left_side: Result<&dyn ContextElement, WalkError> =
|
||||
@ -488,7 +528,7 @@ impl<'a> DustRenderer<'a> {
|
||||
(Err(_), _) | (_, Err(_)) => {
|
||||
return self.render_maybe_body(
|
||||
¶meterized_block.else_contents,
|
||||
breadcrumbs,
|
||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||
blocks,
|
||||
)
|
||||
}
|
||||
@ -496,13 +536,13 @@ impl<'a> DustRenderer<'a> {
|
||||
if left_side_unwrapped < right_side_unwrapped {
|
||||
return self.render_maybe_body(
|
||||
¶meterized_block.contents,
|
||||
breadcrumbs,
|
||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||
blocks,
|
||||
);
|
||||
} else {
|
||||
return self.render_maybe_body(
|
||||
¶meterized_block.else_contents,
|
||||
breadcrumbs,
|
||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||
blocks,
|
||||
);
|
||||
}
|
||||
@ -510,6 +550,12 @@ impl<'a> DustRenderer<'a> {
|
||||
}
|
||||
}
|
||||
DustTag::DTHelperLessThanOrEquals(parameterized_block) => {
|
||||
let new_breadcrumbs = Self::new_breadcrumbs(
|
||||
breadcrumbs,
|
||||
None,
|
||||
¶meterized_block.explicit_context,
|
||||
None,
|
||||
);
|
||||
let param_map: HashMap<&str, &RValue<'a>> =
|
||||
Self::get_rval_map(¶meterized_block.params);
|
||||
let left_side: Result<&dyn ContextElement, WalkError> =
|
||||
@ -524,7 +570,7 @@ impl<'a> DustRenderer<'a> {
|
||||
(Err(_), _) | (_, Err(_)) => {
|
||||
return self.render_maybe_body(
|
||||
¶meterized_block.else_contents,
|
||||
breadcrumbs,
|
||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||
blocks,
|
||||
)
|
||||
}
|
||||
@ -532,13 +578,13 @@ impl<'a> DustRenderer<'a> {
|
||||
if left_side_unwrapped <= right_side_unwrapped {
|
||||
return self.render_maybe_body(
|
||||
¶meterized_block.contents,
|
||||
breadcrumbs,
|
||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||
blocks,
|
||||
);
|
||||
} else {
|
||||
return self.render_maybe_body(
|
||||
¶meterized_block.else_contents,
|
||||
breadcrumbs,
|
||||
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||
blocks,
|
||||
);
|
||||
}
|
||||
@ -629,7 +675,7 @@ impl<'a> DustRenderer<'a> {
|
||||
///
|
||||
/// If explicit_context is not None, then the final breadcrumb stack will be:
|
||||
///
|
||||
/// ```
|
||||
/// ```text
|
||||
/// breadcrumbs
|
||||
/// injected_context
|
||||
/// new_context_element
|
||||
@ -639,7 +685,7 @@ impl<'a> DustRenderer<'a> {
|
||||
/// breadcrumbs are omitted, leading to the new breadcrumb stack
|
||||
/// as:
|
||||
///
|
||||
/// ```
|
||||
/// ```text
|
||||
/// injected_context
|
||||
/// explicit_context
|
||||
/// new_context_element
|
||||
|
Loading…
x
Reference in New Issue
Block a user