diff --git a/src/renderer/html_handlebars/hbs_renderer.rs b/src/renderer/html_handlebars/hbs_renderer.rs index ce2b7137..d28513bd 100644 --- a/src/renderer/html_handlebars/hbs_renderer.rs +++ b/src/renderer/html_handlebars/hbs_renderer.rs @@ -813,7 +813,9 @@ fn build_header_links(html: &str) -> String { insert_link_into_header( level, - caps.get(2).map(|x| x.as_str()).unwrap_or(&caps[4]), + &caps[4], + caps.get(2).map(|x| x.as_str().to_string()), + caps.get(3).map(|x| x.as_str().to_string()), &mut id_counter, ) }) @@ -825,15 +827,19 @@ fn build_header_links(html: &str) -> String { fn insert_link_into_header( level: usize, content: &str, + id: Option, + classes: Option, id_counter: &mut HashMap, ) -> String { - let id = utils::unique_id_from_content(content, id_counter); + let id = id.unwrap_or_else(|| utils::unique_id_from_content(content, id_counter)); + let classes = classes.unwrap_or("".to_string()); format!( - r##"{text}"##, + r##"{text}"##, level = level, id = id, - text = content + text = content, + classes = classes ) }