Skip to content

Commit

Permalink
Rollup merge of rust-lang#55136 - GuillaumeGomez:short-doc, r=QuietMi…
Browse files Browse the repository at this point in the history
…sdreavus

Remove short doc where it starts with a codeblock

Fixes rust-lang#54975.
  • Loading branch information
kennytm committed Nov 13, 2018
2 parents 8a13ae5 + 3030cbe commit 2173681
Show file tree
Hide file tree
Showing 4 changed files with 78 additions and 35 deletions.
50 changes: 28 additions & 22 deletions src/librustdoc/html/markdown.rs
Original file line number Diff line number Diff line change
Expand Up @@ -399,7 +399,6 @@ impl<'a, I: Iterator<Item = Event<'a>>> SummaryLine<'a, I> {
fn check_if_allowed_tag(t: &Tag) -> bool {
match *t {
Tag::Paragraph
| Tag::CodeBlock(_)
| Tag::Item
| Tag::Emphasis
| Tag::Strong
Expand All @@ -420,29 +419,36 @@ impl<'a, I: Iterator<Item = Event<'a>>> Iterator for SummaryLine<'a, I> {
if !self.started {
self.started = true;
}
let event = self.inner.next();
let mut is_start = true;
let is_allowed_tag = match event {
Some(Event::Start(ref c)) => {
self.depth += 1;
check_if_allowed_tag(c)
}
Some(Event::End(ref c)) => {
self.depth -= 1;
is_start = false;
check_if_allowed_tag(c)
}
_ => true,
};
if is_allowed_tag == false {
if is_start {
Some(Event::Start(Tag::Paragraph))
while let Some(event) = self.inner.next() {
let mut is_start = true;
let is_allowed_tag = match event {
Event::Start(Tag::CodeBlock(_)) | Event::End(Tag::CodeBlock(_)) => {
return None;
}
Event::Start(ref c) => {
self.depth += 1;
check_if_allowed_tag(c)
}
Event::End(ref c) => {
self.depth -= 1;
is_start = false;
check_if_allowed_tag(c)
}
_ => {
true
}
};
return if is_allowed_tag == false {
if is_start {
Some(Event::Start(Tag::Paragraph))
} else {
Some(Event::End(Tag::Paragraph))
}
} else {
Some(Event::End(Tag::Paragraph))
}
} else {
event
Some(event)
};
}
None
}
}

Expand Down
35 changes: 25 additions & 10 deletions src/librustdoc/html/render.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2584,24 +2584,39 @@ fn item_module(w: &mut fmt::Formatter, cx: &Context,
_ => "",
};

let stab = myitem.stability_class();
let add = if stab.is_some() {
" "
} else {
""
};

let doc_value = myitem.doc_value().unwrap_or("");
write!(w, "
<tr class='{stab} module-item'>
<td><a class=\"{class}\" href=\"{href}\"
title='{title_type} {title}'>{name}</a>{unsafety_flag}</td>
<td class='docblock-short'>
{stab_docs} {docs}
</td>
write!(w, "\
<tr class='{stab}{add}module-item'>\
<td><a class=\"{class}\" href=\"{href}\" \
title='{title}'>{name}</a>{unsafety_flag}</td>\
<td class='docblock-short'>{stab_docs}{docs}\
</td>\
</tr>",
name = *myitem.name.as_ref().unwrap(),
stab_docs = stab_docs,
docs = MarkdownSummaryLine(doc_value, &myitem.links()),
class = myitem.type_(),
stab = myitem.stability_class().unwrap_or(String::new()),
add = add,
stab = stab.unwrap_or_else(|| String::new()),
unsafety_flag = unsafety_flag,
href = item_path(myitem.type_(), myitem.name.as_ref().unwrap()),
title_type = myitem.type_(),
title = full_path(cx, myitem))?;
title = [full_path(cx, myitem), myitem.type_().to_string()]
.iter()
.filter_map(|s| if !s.is_empty() {
Some(s.as_str())
} else {
None
})
.collect::<Vec<_>>()
.join(" "),
)?;
}
}
}
Expand Down
6 changes: 3 additions & 3 deletions src/test/rustdoc/doc-cfg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ pub struct Portable;
// @has doc_cfg/unix_only/index.html \
// '//*[@id="main"]/*[@class="stability"]/*[@class="stab portability"]' \
// 'This is supported on Unix only.'
// @matches - '//*[@class=" module-item"]//*[@class="stab portability"]' '\AUnix\Z'
// @matches - '//*[@class=" module-item"]//*[@class="stab portability"]' '\AUnix and ARM\Z'
// @matches - '//*[@class="module-item"]//*[@class="stab portability"]' '\AUnix\Z'
// @matches - '//*[@class="module-item"]//*[@class="stab portability"]' '\AUnix and ARM\Z'
// @count - '//*[@class="stab portability"]' 3
#[doc(cfg(unix))]
pub mod unix_only {
Expand Down Expand Up @@ -52,7 +52,7 @@ pub mod unix_only {

// the portability header is different on the module view versus the full view
// @has doc_cfg/index.html
// @matches - '//*[@class=" module-item"]//*[@class="stab portability"]' '\Aavx\Z'
// @matches - '//*[@class="module-item"]//*[@class="stab portability"]' '\Aavx\Z'

// @has doc_cfg/fn.uses_target_feature.html
// @has - '//*[@id="main"]/*[@class="stability"]/*[@class="stab portability"]' \
Expand Down
22 changes: 22 additions & 0 deletions src/test/rustdoc/short-docblock-codeblock.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.

#![crate_name = "foo"]

// @has foo/index.html '//*[@class="module-item"]//td[@class="docblock-short"]' ""
// @!has foo/index.html '//*[@id="module-item"]//td[@class="docblock-short"]' "Some text."
// @!has foo/index.html '//*[@id="module-item"]//td[@class="docblock-short"]' "let x = 12;"

/// ```
/// let x = 12;
/// ```
///
/// Some text.
pub fn foo() {}

0 comments on commit 2173681

Please sign in to comment.