Skip to content

rustdoc: item summaries that are headers are not printed in module pages, under hoedown #46377

Closed
@QuietMisdreavus

Description

@QuietMisdreavus
Member
/// # 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.)

Activity

added
T-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.
E-easyCall for participation: Easy difficulty. Experience needed to fix: Not much. Good first issue.
E-mentorCall for participation: This issue has a mentor. Use #t-compiler/help on Zulip for discussion.
A-docsArea: Documentation for any part of the project, including the compiler, standard library, and tools
on Nov 29, 2017
QuietMisdreavus

QuietMisdreavus commented on Nov 29, 2017

@QuietMisdreavus
MemberAuthor

(Also, this fix is not completely useless after the Pulldown switch is over, since plain_summary_line also calls this to truncate the input markdown for a Pulldown render pass, and that's called more broadly.)

added a commit that references this issue on Dec 1, 2017

Rollup merge of rust-lang#46387 - chrisduerr:master, r=QuietMisdreavus

bc8e8fa
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

A-docsArea: Documentation for any part of the project, including the compiler, standard library, and toolsE-easyCall for participation: Easy difficulty. Experience needed to fix: Not much. Good first issue.E-mentorCall for participation: This issue has a mentor. Use #t-compiler/help on Zulip for discussion.T-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

    Development

    Participants

    @QuietMisdreavus

    Issue actions

      rustdoc: item summaries that are headers are not printed in module pages, under hoedown · Issue #46377 · rust-lang/rust