1
Fork 0

Factor out render_rightside

This covers rendering of stability_since and the srclink across methods
and trait implementations, so their DOM representation is consistent.
This commit is contained in:
Jacob Hoffman-Andrews 2021-06-12 00:25:26 -07:00
parent 593d6d1cb1
commit 5de1391b88
3 changed files with 30 additions and 54 deletions

View file

@ -1294,7 +1294,6 @@ fn render_impl(
) { ) {
let item_type = item.type_(); let item_type = item.type_();
let name = item.name.as_ref().unwrap(); let name = item.name.as_ref().unwrap();
let tcx = cx.tcx();
let render_method_item = match render_mode { let render_method_item = match render_mode {
RenderMode::Normal => true, RenderMode::Normal => true,
@ -1363,6 +1362,7 @@ fn render_impl(
"<div id=\"{}\" class=\"{}{} has-srclink\">", "<div id=\"{}\" class=\"{}{} has-srclink\">",
id, item_type, in_trait_class, id, item_type, in_trait_class,
); );
render_rightside(w, cx, item, outer_version, outer_const_version);
w.write_str("<code>"); w.write_str("<code>");
render_assoc_item( render_assoc_item(
w, w,
@ -1372,15 +1372,7 @@ fn render_impl(
cx, cx,
); );
w.write_str("</code>"); w.write_str("</code>");
render_stability_since_raw(
w,
item.stable_since(tcx).as_deref(),
item.const_stable_since(tcx).as_deref(),
outer_version,
outer_const_version,
);
write!(w, "<a href=\"#{}\" class=\"anchor\"></a>", id); write!(w, "<a href=\"#{}\" class=\"anchor\"></a>", id);
write_srclink(cx, item, w);
w.write_str("</div>"); w.write_str("</div>");
} }
} }
@ -1413,6 +1405,7 @@ fn render_impl(
"<div id=\"{}\" class=\"{}{} has-srclink\"><code>", "<div id=\"{}\" class=\"{}{} has-srclink\"><code>",
id, item_type, in_trait_class id, item_type, in_trait_class
); );
render_rightside(w, cx, item, outer_version, outer_const_version);
assoc_const( assoc_const(
w, w,
item, item,
@ -1423,15 +1416,7 @@ fn render_impl(
cx, cx,
); );
w.write_str("</code>"); w.write_str("</code>");
render_stability_since_raw(
w,
item.stable_since(tcx).as_deref(),
item.const_stable_since(tcx).as_deref(),
outer_version,
outer_const_version,
);
write!(w, "<a href=\"#{}\" class=\"anchor\"></a>", id); write!(w, "<a href=\"#{}\" class=\"anchor\"></a>", id);
write_srclink(cx, item, w);
w.write_str("</div>"); w.write_str("</div>");
} }
clean::AssocTypeItem(ref bounds, ref default) => { clean::AssocTypeItem(ref bounds, ref default) => {
@ -1590,6 +1575,28 @@ fn render_impl(
w.write_str(&close_tags); w.write_str(&close_tags);
} }
fn render_rightside(
w: &mut Buffer,
cx: &Context<'_>,
item: &clean::Item,
outer_version: Option<&str>,
outer_const_version: Option<&str>,
) {
let tcx = cx.tcx();
write!(w, "<div class=\"rightside\">");
render_stability_since_raw(
w,
item.stable_since(tcx).as_deref(),
item.const_stable_since(tcx).as_deref(),
outer_version,
outer_const_version,
);
write_srclink(cx, item, w);
w.write_str("</div>");
}
pub(crate) fn render_impl_summary( pub(crate) fn render_impl_summary(
w: &mut Buffer, w: &mut Buffer,
cx: &Context<'_>, cx: &Context<'_>,
@ -1604,7 +1611,6 @@ pub(crate) fn render_impl_summary(
// in documentation pages for trait with automatic implementations like "Send" and "Sync". // in documentation pages for trait with automatic implementations like "Send" and "Sync".
aliases: &[String], aliases: &[String],
) { ) {
let tcx = cx.tcx();
let id = cx.derive_id(match i.inner_impl().trait_ { let id = cx.derive_id(match i.inner_impl().trait_ {
Some(ref t) => { Some(ref t) => {
if is_on_foreign_type { if is_on_foreign_type {
@ -1620,13 +1626,11 @@ pub(crate) fn render_impl_summary(
} else { } else {
format!(" data-aliases=\"{}\"", aliases.join(",")) format!(" data-aliases=\"{}\"", aliases.join(","))
}; };
write!(w, "<div id=\"{}\" class=\"impl has-srclink\"{}>", id, aliases);
render_rightside(w, cx, &i.impl_item, outer_version, outer_const_version);
write!(w, "<code class=\"in-band\">");
if let Some(use_absolute) = use_absolute { if let Some(use_absolute) = use_absolute {
write!(
w,
"<div id=\"{}\" class=\"impl has-srclink\"{}>\
<code class=\"in-band\">",
id, aliases
);
write!(w, "{}", i.inner_impl().print(use_absolute, cx)); write!(w, "{}", i.inner_impl().print(use_absolute, cx));
if show_def_docs { if show_def_docs {
for it in &i.inner_impl().items { for it in &i.inner_impl().items {
@ -1637,28 +1641,11 @@ pub(crate) fn render_impl_summary(
} }
} }
} }
w.write_str("</code>");
} else { } else {
write!( write!(w, "{}", i.inner_impl().print(false, cx));
w,
"<div id=\"{}\" class=\"impl has-srclink\"{}>\
<code class=\"in-band\">{}</code>",
id,
aliases,
i.inner_impl().print(false, cx)
);
} }
write!(w, "</code>");
write!(w, "<a href=\"#{}\" class=\"anchor\"></a>", id); write!(w, "<a href=\"#{}\" class=\"anchor\"></a>", id);
write!(w, "<div class=\"rightside\">");
render_stability_since_raw(
w,
i.impl_item.stable_since(tcx).as_deref(),
i.impl_item.const_stable_since(tcx).as_deref(),
outer_version,
outer_const_version,
);
write_srclink(cx, &i.impl_item, w);
w.write_str("</div>"); // end of "rightside"
let is_trait = i.inner_impl().trait_.is_some(); let is_trait = i.inner_impl().trait_.is_some();
if is_trait { if is_trait {

View file

@ -899,9 +899,6 @@ body.blur > :not(#help) {
.since { .since {
font-weight: normal; font-weight: normal;
font-size: initial; font-size: initial;
position: absolute;
right: 0;
top: 0;
} }
.impl-items .since, .impl .since, .methods .since { .impl-items .since, .impl .since, .methods .since {
@ -1606,11 +1603,6 @@ details.undocumented[open] > summary::before {
margin-left: 0; margin-left: 0;
} }
.content .impl-items .method, .content .impl-items > .type, .impl-items > .associatedconstant,
.impl-items > .associatedtype {
display: flex;
}
.anchor { .anchor {
display: none !important; display: none !important;
} }

View file

@ -2,9 +2,6 @@
goto: file://|DOC_PATH|/test_docs/struct.Foo.html#method.borrow goto: file://|DOC_PATH|/test_docs/struct.Foo.html#method.borrow
// In the blanket implementations list, "Borrow" is the second one, hence the ":nth(2)". // In the blanket implementations list, "Borrow" is the second one, hence the ":nth(2)".
assert: ("#blanket-implementations-list > details:nth-child(2)", "open", "") assert: ("#blanket-implementations-list > details:nth-child(2)", "open", "")
// Please note the "\" below is needed because otherwise ".borrow" would be interpreted as
// a class selector.
assert: ("#method\.borrow", {"display": "flex"})
// We first check that the impl block is open by default. // We first check that the impl block is open by default.
assert: ("#implementations + details", "open", "") assert: ("#implementations + details", "open", "")
// We collapse it. // We collapse it.