Rollup merge of #82351 - notriddle:docs-meta-description, r=jyn514
Use the first paragraph, instead of cookie-cutter text, for rustdoc descriptions Partially addresses #82283.
This commit is contained in:
commit
1dba8ce8a5
5 changed files with 44 additions and 1 deletions
|
@ -1124,6 +1124,7 @@ crate fn plain_text_summary(md: &str) -> String {
|
||||||
Event::HardBreak | Event::SoftBreak => s.push(' '),
|
Event::HardBreak | Event::SoftBreak => s.push(' '),
|
||||||
Event::Start(Tag::CodeBlock(..)) => break,
|
Event::Start(Tag::CodeBlock(..)) => break,
|
||||||
Event::End(Tag::Paragraph) => break,
|
Event::End(Tag::Paragraph) => break,
|
||||||
|
Event::End(Tag::Heading(..)) => break,
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -230,6 +230,7 @@ fn test_plain_text_summary() {
|
||||||
t("code `let x = i32;` ...", "code `let x = i32;` ...");
|
t("code `let x = i32;` ...", "code `let x = i32;` ...");
|
||||||
t("type `Type<'static>` ...", "type `Type<'static>` ...");
|
t("type `Type<'static>` ...", "type `Type<'static>` ...");
|
||||||
t("# top header", "top header");
|
t("# top header", "top header");
|
||||||
|
t("# top header\n\nfollowed by some text", "top header");
|
||||||
t("## header", "header");
|
t("## header", "header");
|
||||||
t("first paragraph\n\nsecond paragraph", "first paragraph");
|
t("first paragraph\n\nsecond paragraph", "first paragraph");
|
||||||
t("```\nfn main() {}\n```", "");
|
t("```\nfn main() {}\n```", "");
|
||||||
|
|
|
@ -1548,7 +1548,10 @@ impl Context<'_> {
|
||||||
}
|
}
|
||||||
title.push_str(" - Rust");
|
title.push_str(" - Rust");
|
||||||
let tyname = it.type_();
|
let tyname = it.type_();
|
||||||
let desc = if it.is_crate() {
|
let desc = it.doc_value().as_ref().map(|doc| plain_text_summary(&doc));
|
||||||
|
let desc = if let Some(desc) = desc {
|
||||||
|
desc
|
||||||
|
} else if it.is_crate() {
|
||||||
format!("API documentation for the Rust `{}` crate.", self.shared.layout.krate)
|
format!("API documentation for the Rust `{}` crate.", self.shared.layout.krate)
|
||||||
} else {
|
} else {
|
||||||
format!(
|
format!(
|
||||||
|
|
24
src/test/rustdoc/description.rs
Normal file
24
src/test/rustdoc/description.rs
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
#![crate_name = "foo"]
|
||||||
|
//! # Description test crate
|
||||||
|
//!
|
||||||
|
//! This is the contents of the test crate docstring.
|
||||||
|
//! It should not show up in the description.
|
||||||
|
|
||||||
|
// @has 'foo/index.html' '//meta[@name="description"]/@content' \
|
||||||
|
// 'Description test crate'
|
||||||
|
// @!has - '//meta[@name="description"]/@content' 'should not show up'
|
||||||
|
|
||||||
|
// @has 'foo/foo_mod/index.html' '//meta[@name="description"]/@content' \
|
||||||
|
// 'First paragraph description.'
|
||||||
|
// @!has - '//meta[@name="description"]/@content' 'Second paragraph'
|
||||||
|
/// First paragraph description.
|
||||||
|
///
|
||||||
|
/// Second paragraph should not show up.
|
||||||
|
pub mod foo_mod {
|
||||||
|
pub struct __Thing {}
|
||||||
|
}
|
||||||
|
|
||||||
|
// @has 'foo/fn.foo_fn.html' '//meta[@name="description"]/@content' \
|
||||||
|
// 'Only paragraph.'
|
||||||
|
/// Only paragraph.
|
||||||
|
pub fn foo_fn() {}
|
14
src/test/rustdoc/description_default.rs
Normal file
14
src/test/rustdoc/description_default.rs
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
#![crate_name = "foo"]
|
||||||
|
|
||||||
|
// @has 'foo/index.html' '//meta[@name="description"]/@content' \
|
||||||
|
// 'API documentation for the Rust `foo` crate.'
|
||||||
|
|
||||||
|
// @has 'foo/foo_mod/index.html' '//meta[@name="description"]/@content' \
|
||||||
|
// 'API documentation for the Rust `foo_mod` mod in crate `foo`.'
|
||||||
|
pub mod foo_mod {
|
||||||
|
pub struct __Thing {}
|
||||||
|
}
|
||||||
|
|
||||||
|
// @has 'foo/fn.foo_fn.html' '//meta[@name="description"]/@content' \
|
||||||
|
// 'API documentation for the Rust `foo_fn` fn in crate `foo`.'
|
||||||
|
pub fn foo_fn() {}
|
Loading…
Add table
Add a link
Reference in a new issue