diff --git a/src/uucore_procs/src/lib.rs b/src/uucore_procs/src/lib.rs index c1ef8bc75..ab2458ceb 100644 --- a/src/uucore_procs/src/lib.rs +++ b/src/uucore_procs/src/lib.rs @@ -170,11 +170,14 @@ fn parse_help_section(section: &str, content: &str) -> String { ) } + // Prefix includes space to allow processing of section with level 3-6 headers + let section_header_prefix = "## "; + content .lines() .skip_while(|&l| !is_section_header(l, section)) .skip(1) - .take_while(|l| !l.starts_with("##")) + .take_while(|l| !l.starts_with(section_header_prefix)) .collect::>() .join("\n") .trim() @@ -252,6 +255,31 @@ mod tests { ); } + #[test] + fn section_parsing_with_additional_headers() { + let input = "\ + # ls\n\ + ## after section\n\ + This is some section\n\ + \n\ + ### level 3 header\n\ + \n\ + Additional text under the section.\n\ + \n\ + #### level 4 header\n\ + \n\ + Yet another paragraph\n"; + + assert_eq!( + parse_help_section("after section", input), + "This is some section\n\n\ + ### level 3 header\n\n\ + Additional text under the section.\n\n\ + #### level 4 header\n\n\ + Yet another paragraph" + ); + } + #[test] #[should_panic] fn section_parsing_panic() {