Skip to content

Commit a5f50a9

Browse files
committed
Only emit warnings if the user is using Pulldown
Also checks for differences after eliminating whitespace-only diffs. Renames get_html_diff
1 parent 97b01ab commit a5f50a9

File tree

1 file changed

+32
-25
lines changed

1 file changed

+32
-25
lines changed

src/librustdoc/html/render.rs

Lines changed: 32 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1645,30 +1645,37 @@ fn document(w: &mut fmt::Formatter, cx: &Context, item: &clean::Item) -> fmt::Re
16451645
Ok(())
16461646
}
16471647

1648-
fn get_html_diff(w: &mut fmt::Formatter, md_text: &str, render_type: RenderType,
1648+
fn render_markdown(w: &mut fmt::Formatter, md_text: &str, render_type: RenderType,
16491649
prefix: &str) -> fmt::Result {
1650-
let output = format!("{}", Markdown(md_text, render_type));
1651-
let old = format!("{}", Markdown(md_text, match render_type {
1652-
RenderType::Hoedown => RenderType::Pulldown,
1653-
RenderType::Pulldown => RenderType::Hoedown,
1654-
}));
1655-
let differences = html_diff::get_differences(&output, &old);
1656-
if !differences.is_empty() {
1657-
println!("Differences spotted in {:?}:\n{}",
1658-
md_text,
1659-
differences.iter()
1660-
.filter_map(|s| {
1661-
match *s {
1662-
html_diff::Difference::NodeText { ref elem_text,
1663-
ref opposite_elem_text,
1664-
.. }
1665-
if elem_text.trim() == opposite_elem_text.trim() => None,
1666-
_ => Some(format!("=> {}", s.to_string())),
1667-
}
1668-
})
1669-
.collect::<Vec<String>>()
1670-
.join("\n"));
1671-
}
1650+
let hoedown_output = format!("{}", Markdown(md_text, RenderType::Hoedown));
1651+
// We only emit warnings if the user has opted-in to Pulldown rendering.
1652+
let output = if render_type == RenderType::Pulldown {
1653+
let pulldown_output = format!("{}", Markdown(md_text, RenderType::Pulldown));
1654+
let differences = html_diff::get_differences(&pulldown_output, &hoedown_output);
1655+
let differences = differences.iter()
1656+
.filter_map(|s| {
1657+
match *s {
1658+
html_diff::Difference::NodeText { ref elem_text,
1659+
ref opposite_elem_text,
1660+
.. }
1661+
if elem_text.trim() == opposite_elem_text.trim() => None,
1662+
_ => Some(format!("=> {}", s.to_string())),
1663+
}
1664+
})
1665+
.collect::<Vec<String>>();
1666+
1667+
if !differences.is_empty() {
1668+
// Emit warnings if there are differences.
1669+
println!("Differences spotted in {:?}:\n{}",
1670+
md_text,
1671+
differences.join("\n"));
1672+
}
1673+
1674+
pulldown_output
1675+
} else {
1676+
hoedown_output
1677+
};
1678+
16721679
write!(w, "<div class='docblock'>{}{}</div>", prefix, output)
16731680
}
16741681

@@ -1681,7 +1688,7 @@ fn document_short(w: &mut fmt::Formatter, item: &clean::Item, link: AssocItemLin
16811688
} else {
16821689
format!("{}", &plain_summary_line(Some(s)))
16831690
};
1684-
get_html_diff(w, &markdown, render_type, prefix)?;
1691+
render_markdown(w, &markdown, render_type, prefix)?;
16851692
} else if !prefix.is_empty() {
16861693
write!(w, "<div class='docblock'>{}</div>", prefix)?;
16871694
}
@@ -1705,7 +1712,7 @@ fn render_assoc_const_value(item: &clean::Item) -> String {
17051712
fn document_full(w: &mut fmt::Formatter, item: &clean::Item,
17061713
render_type: RenderType, prefix: &str) -> fmt::Result {
17071714
if let Some(s) = item.doc_value() {
1708-
get_html_diff(w, s, render_type, prefix)?;
1715+
render_markdown(w, s, render_type, prefix)?;
17091716
} else if !prefix.is_empty() {
17101717
write!(w, "<div class='docblock'>{}</div>", prefix)?;
17111718
}

0 commit comments

Comments
 (0)