diff --git a/packages/include_mdbook/packages/mdbook-gen-example/src/router.rs b/packages/include_mdbook/packages/mdbook-gen-example/src/router.rs index 79a230afe..3bb58bade 100644 --- a/packages/include_mdbook/packages/mdbook-gen-example/src/router.rs +++ b/packages/include_mdbook/packages/mdbook-gen-example/src/router.rs @@ -88,7 +88,7 @@ pub static LAZY_BOOK: use_mdbook::Lazy { let mut sections = Vec::new(); + let mut title = String::new(); + parser.for_each(|event| match event { Event::Start(Tag::Heading(level, ..)) => { + title.clear(); last_heading = Some(level); } - Event::Text(text) => { + Event::Text(text) | Event::Code(text) => { + title.push_str(&text); + } + Event::End(Tag::Heading(_, _, _)) => { if let Some(current_level) = &mut last_heading { - let anchor = text + let anchor = title .clone() - .into_string() .trim() .to_lowercase() + .chars() + .filter(|c| { + c.is_ascii_alphanumeric() || *c == ' ' || *c == '-' || *c == '_' + }) + .collect::() + .replace('_', "-") .replace(' ', "-"); sections.push(Section { level: *current_level as usize, - title: text.to_string(), + title: title.clone(), id: anchor, }); - - last_heading = None; } + + last_heading = None; } _ => {} });