From c6d7cdcc1860235739078291e2f411f002478db4 Mon Sep 17 00:00:00 2001 From: crowlkats <crowlkats@toaxl.com> Date: Mon, 16 Dec 2024 23:41:16 +0100 Subject: [PATCH] fix(html): recursively update ns_qualifiers when resolving a reference --- src/html/mod.rs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/html/mod.rs b/src/html/mod.rs index 5b5b2a4c..df9f40ac 100644 --- a/src/html/mod.rs +++ b/src/html/mod.rs @@ -527,8 +527,24 @@ impl GenerateCtx { parent.ns_qualifiers.len() + node.ns_qualifiers.len(), ); ns_qualifiers.extend(parent.sub_qualifier()); - ns_qualifiers.extend(node.ns_qualifiers.iter().cloned()); - node.ns_qualifiers = ns_qualifiers.into(); + + fn handle_node( + node: &mut DocNodeWithContext, + ns_qualifiers: Vec<String>, + ) { + if let Some(children) = &mut node.namespace_children { + for node in children { + handle_node(node, ns_qualifiers.clone()); + } + } + + let mut new_ns_qualifiers = ns_qualifiers; + new_ns_qualifiers.extend(node.ns_qualifiers.iter().cloned()); + node.ns_qualifiers = new_ns_qualifiers.into(); + } + + handle_node(&mut node, ns_qualifiers); + Cow::Owned(node) } else { node