diff options
| author | Laurenz <laurmaedje@gmail.com> | 2023-11-27 16:04:47 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2023-11-27 16:04:47 +0100 |
| commit | bf8a3ecec5ac0f48d5bbf59930b4ea07c03c3c96 (patch) | |
| tree | 8fb94d07612b585e64d004e5d901c0019c4c1f27 /crates/typst-docs/src/link.rs | |
| parent | 76c5ca051e9c784e919e0b85155d147388e8e3d7 (diff) | |
Update changelog
Diffstat (limited to 'crates/typst-docs/src/link.rs')
| -rw-r--r-- | crates/typst-docs/src/link.rs | 19 |
1 files changed, 9 insertions, 10 deletions
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<String> { 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)?; |
