Description
/// # Check out this struct!
pub struct SomeStruct;
This will show up differently in docs depending on whether Hoedown or Pulldown is being used. It's not a rendering difference for the markdown, per se, it's how the summary line is generated:
fn shorter<'a>(s: Option<&'a str>) -> String {
match s {
Some(s) => s.lines().take_while(|line|{
(*line).chars().any(|chr|{
!chr.is_whitespace()
})
}).collect::<Vec<_>>().join("\n"),
None => "".to_string()
}
}
That function is used to truncate markdown renderings from Hoedown for summary lines on module pages. Hoedown (presumably) emits an extra blank line before the <h1>
in this sample, so this shorter
function immediately sees a blank line and emits an empty string.
A fix for this could just add a skip_while(|s| s.chars().all(|c| c.is_whitespace()))
before the take_while
there, which would skip all empty/blank lines before the first block of text, and thus properly grab the first item from the block.
(Note: the reason this actually emits the header in Pulldown is that under Pulldown, shorter
is not actually called! It goes through a separate adapter that wraps the event emitter from Pulldown and stops once the first block is complete. This way it skips the leading-whitespace problem entirely.)