Skip to content

Commit

Permalink
Merge pull request #419 from sunng87/fix/416
Browse files Browse the repository at this point in the history
Fix issue when upper block has block value
  • Loading branch information
sunng87 committed Feb 20, 2021
1 parent b3521f4 commit e0fe578
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 8 deletions.
17 changes: 9 additions & 8 deletions src/context.rs
Expand Up @@ -78,19 +78,20 @@ fn parse_json_visitor<'a, 'reg>(
}
None => {
if path_context_depth > 0 {
if let Some(ref context_base_path) = block_contexts
let blk = block_contexts
.get(path_context_depth as usize)
.map(|blk| blk.base_path())
{
extend(&mut path_stack, context_base_path);
.or_else(|| block_contexts.front());

if let Some(base_value) = blk.and_then(|blk| blk.base_value()) {
merge_json_path(&mut path_stack, relative_path);
Ok(ResolvedPath::LocalValue(path_stack, base_value))
} else {
// TODO: is this correct behaviour?
if let Some(ref base_path) = block_contexts.front().map(|blk| blk.base_path()) {
if let Some(base_path) = blk.map(|blk| blk.base_path()) {
extend(&mut path_stack, base_path);
}
merge_json_path(&mut path_stack, relative_path);
Ok(ResolvedPath::AbsolutePath(path_stack))
}
merge_json_path(&mut path_stack, relative_path);
Ok(ResolvedPath::AbsolutePath(path_stack))
} else if from_root {
merge_json_path(&mut path_stack, relative_path);
Ok(ResolvedPath::AbsolutePath(path_stack))
Expand Down
17 changes: 17 additions & 0 deletions src/partial.rs
Expand Up @@ -264,4 +264,21 @@ mod test {
let r0 = handlebars.render("t", &data);
assert_eq!(r0.ok().unwrap(), "2 true2 false");
}

#[test]
fn test_up_to_partial_level() {
let outer = r#"{{>inner name="fruit:" vegetables=fruits}}"#;
let inner = "{{#each vegetables}}{{../name}} {{this}},{{/each}}";

let data = json!({ "fruits": ["carrot", "tomato"] });

let mut handlebars = Registry::new();
handlebars.register_template_string("outer", outer).unwrap();
handlebars.register_template_string("inner", inner).unwrap();

assert_eq!(
handlebars.render("outer", &data).unwrap(),
"fruit: carrot,fruit: tomato,"
);
}
}

0 comments on commit e0fe578

Please sign in to comment.