From bf8a3ecec5ac0f48d5bbf59930b4ea07c03c3c96 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Mon, 27 Nov 2023 16:04:47 +0100 Subject: Update changelog --- crates/typst-docs/src/link.rs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'crates/typst-docs/src') diff --git a/crates/typst-docs/src/link.rs b/crates/typst-docs/src/link.rs index e2721b95..e7e191fe 100644 --- a/crates/typst-docs/src/link.rs +++ b/crates/typst-docs/src/link.rs @@ -55,20 +55,19 @@ fn resolve_known(head: &str) -> Option<&'static str> { fn resolve_definition(head: &str) -> StrResult { let mut parts = head.trim_start_matches('$').split('.').peekable(); let mut focus = &LIBRARY.global; + let mut category = None; - let Some(name) = parts.peek() else { - bail!("missing first link component"); - }; - - let Some(category) = focus.scope().get_category(name) else { - bail!("{name} has no category"); - }; - - while let Some(m) = parts.peek().and_then(|&name| get_module(focus, name).ok()) { - focus = m; + while let Some(name) = parts.peek() { + if category.is_none() { + category = focus.scope().get_category(name); + } + let Ok(module) = get_module(focus, name) else { break }; + focus = module; parts.next(); } + let Some(category) = category else { bail!("{head} has no category") }; + let name = parts.next().ok_or("link is missing first part")?; let value = focus.field(name)?; -- cgit v1.2.3