diff options
| author | Simonas Kazlauskas <git@kazlauskas.me> | 2015-03-14 00:45:39 +0200 |
|---|---|---|
| committer | Simonas Kazlauskas <git@kazlauskas.me> | 2015-03-14 13:00:19 +0200 |
| commit | b09e5daa89b6dbfe93b9db7a66b670ca6d1b5f4a (patch) | |
| tree | 5e65e09163b20bfdb4106b96bd043b7d99f750d3 | |
| parent | 9eb69abad8ffbce840e7dc7038ddea434dc987f1 (diff) | |
| download | rust-b09e5daa89b6dbfe93b9db7a66b670ca6d1b5f4a.tar.gz rust-b09e5daa89b6dbfe93b9db7a66b670ca6d1b5f4a.zip | |
Split rustdoc summary lines in a smarter way
Previously it would fail on a trivial case like
/// Summary line
/// <trailing space>
/// Regular content
Compliant markdown preprocessor would render that as two separate paragraphs, but our summary line
extractor would interpret both lines as the same paragraph and include both into the short summary.
| -rw-r--r-- | src/librustdoc/html/render.rs | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index dba7b16ecee..85c04d76394 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -407,7 +407,7 @@ fn build_index(krate: &clean::Crate, cache: &mut Cache) -> io::Result<String> { ty: shortty(item), name: item.name.clone().unwrap(), path: fqp[..fqp.len() - 1].connect("::"), - desc: shorter(item.doc_value()).to_string(), + desc: shorter(item.doc_value()), parent: Some(did), }); }, @@ -876,7 +876,7 @@ impl DocFolder for Cache { ty: shortty(&item), name: s.to_string(), path: path.connect("::").to_string(), - desc: shorter(item.doc_value()).to_string(), + desc: shorter(item.doc_value()), parent: parent, }); } @@ -1467,13 +1467,14 @@ fn full_path(cx: &Context, item: &clean::Item) -> String { return s } -fn shorter<'a>(s: Option<&'a str>) -> &'a str { +fn shorter<'a>(s: Option<&'a str>) -> String { match s { - Some(s) => match s.find("\n\n") { - Some(pos) => &s[..pos], - None => s, - }, - None => "" + Some(s) => s.lines().take_while(|line|{ + (*line).chars().any(|chr|{ + !chr.is_whitespace() + }) + }).collect::<Vec<_>>().connect("\n"), + None => "".to_string() } } @@ -1603,7 +1604,7 @@ fn item_module(w: &mut fmt::Formatter, cx: &Context, </tr> ", *myitem.name.as_ref().unwrap(), - Markdown(shorter(myitem.doc_value())), + Markdown(&shorter(myitem.doc_value())[..]), class = shortty(myitem), href = item_path(myitem), title = full_path(cx, myitem), |
