From 149e2b055bbf19d6908d825817f2edbb6bb66abb Mon Sep 17 00:00:00 2001 From: Laurenz Date: Mon, 6 Feb 2023 13:53:21 +0100 Subject: Custom link callback --- docs/src/lib.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'docs/src/lib.rs') diff --git a/docs/src/lib.rs b/docs/src/lib.rs index 76f25250..6cb4a89c 100644 --- a/docs/src/lib.rs +++ b/docs/src/lib.rs @@ -60,6 +60,9 @@ pub fn provide(resolver: &dyn Resolver) -> Vec { /// Resolve consumer dependencies. pub trait Resolver { + /// Try to resolve a link that the system cannot resolve itself. + fn link(&self, link: &str) -> Option; + /// Produce an URL for an image file. fn image(&self, filename: &str, data: &[u8]) -> String; @@ -294,6 +297,7 @@ fn category_page(resolver: &dyn Resolver, category: &str) -> PageModel { #[derive(Debug, Serialize)] pub struct FuncModel { pub name: &'static str, + pub display: &'static str, pub oneliner: &'static str, pub details: Html, pub showable: bool, @@ -330,6 +334,7 @@ fn function_page( fn func_model(resolver: &dyn Resolver, func: &Func, info: &FuncInfo) -> FuncModel { FuncModel { name: info.name.into(), + display: info.display, oneliner: oneliner(info.docs), details: Html::markdown(resolver, info.docs), showable: func.select(None).is_ok() && info.category != "math", @@ -442,7 +447,7 @@ fn types_page(resolver: &dyn Resolver, parent: &str) -> PageModel { let mut items = vec![]; for model in type_models(resolver) { - let route = format!("{route}{}/", model.name); + let route = format!("{route}{}/", urlify(&model.name)); items.push(CategoryItem { name: model.name.clone(), route: route.clone(), @@ -694,7 +699,7 @@ fn details(key: &str) -> &str { } /// Turn a title into an URL fragment. -fn urlify(title: &str) -> String { +pub fn urlify(title: &str) -> String { title .chars() .map(|c| c.to_ascii_lowercase()) -- cgit v1.2.3