rustdoc: Hide #text in doc-tests

Since `#![attr]` and `#[attr]` are the only valid syntax that start with `#`, we can just special case those two tokens.
This commit is contained in:
Joshua Nelson 2021-04-22 14:50:56 -04:00
parent 25c15cdbe0
commit af6c3201fc
3 changed files with 44 additions and 6 deletions

View file

@ -147,12 +147,19 @@ fn map_line(s: &str) -> Line<'_> {
let trimmed = s.trim();
if trimmed.starts_with("##") {
Line::Shown(Cow::Owned(s.replacen("##", "#", 1)))
} else if let Some(stripped) = trimmed.strip_prefix("# ") {
// # text
Line::Hidden(&stripped)
} else if trimmed == "#" {
// We cannot handle '#text' because it could be #[attr].
Line::Hidden("")
} else if trimmed.starts_with('#') {
let mut without_hash = trimmed[1..].trim_start();
if without_hash.starts_with('!') {
// #! text
without_hash = without_hash[1..].trim_start_matches(' ');
}
if without_hash.starts_with('[') {
// #[attr] or #![attr]
Line::Shown(Cow::Borrowed(s))
} else {
// #text
Line::Hidden(without_hash)
}
} else {
Line::Shown(Cow::Borrowed(s))
}