diff options
| author | Jimmy Cuadra <jimmy@jimmycuadra.com> | 2017-02-11 04:16:13 -0800 |
|---|---|---|
| committer | Jimmy Cuadra <jimmy@jimmycuadra.com> | 2017-02-11 04:16:13 -0800 |
| commit | c603839d5f8050cf050b18d7e2c14f48e78d2382 (patch) | |
| tree | 5eca68248bc2dbf41b9277fb6636923b18f45f8e | |
| parent | bae454edc5e18e81b831baf4a7647bf2dda620a8 (diff) | |
| download | rust-c603839d5f8050cf050b18d7e2c14f48e78d2382.tar.gz rust-c603839d5f8050cf050b18d7e2c14f48e78d2382.zip | |
rustdoc: Only include a stability span if needed.
| -rw-r--r-- | src/librustdoc/clean/mod.rs | 30 | ||||
| -rw-r--r-- | src/librustdoc/html/render.rs | 17 |
2 files changed, 32 insertions, 15 deletions
diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index 291fc8dfa96..4a6e8622460 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -327,17 +327,27 @@ impl Item { } } - pub fn stability_class(&self) -> String { - self.stability.as_ref().map(|ref s| { - let mut base = match s.level { - stability::Unstable => "unstable".to_string(), - stability::Stable => String::new(), - }; - if !s.deprecated_since.is_empty() { - base.push_str(" deprecated"); + pub fn stability_class(&self) -> Option<String> { + match self.stability { + Some(ref s) => { + let mut classes = Vec::with_capacity(2); + + if s.level == stability::Unstable { + classes.push("unstable"); + } + + if !s.deprecated_since.is_empty() { + classes.push("deprecated"); + } + + if classes.len() != 0 { + Some(classes.join(" ")) + } else { + None + } } - base - }).unwrap_or(String::new()) + None => None, + } } pub fn stable_since(&self) -> Option<&str> { diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index 6234d890244..fc1597469b1 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -1827,7 +1827,7 @@ fn item_module(w: &mut fmt::Formatter, cx: &Context, stab_docs = stab_docs, docs = shorter(Some(&Markdown(doc_value).to_string())), class = myitem.type_(), - stab = myitem.stability_class(), + stab = myitem.stability_class().unwrap_or("".to_string()), unsafety_flag = unsafety_flag, href = item_path(myitem.type_(), myitem.name.as_ref().unwrap()), title = full_path(cx, myitem))?; @@ -2369,13 +2369,16 @@ fn item_struct(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item, write!(w, "<span id='{id}' class='{item_type}'> <span id='{ns_id}' class='invisible'> <code>{name}: {ty}</code> - </span></span><span class='stab {stab}'></span>", + </span></span>", item_type = ItemType::StructField, id = id, ns_id = ns_id, - stab = field.stability_class(), name = field.name.as_ref().unwrap(), ty = ty)?; + if let Some(stability_class) = field.stability_class() { + write!(w, "<span class='stab {stab}'></span>", + stab = stability_class)?; + } document(w, cx, field)?; } } @@ -2406,11 +2409,15 @@ fn item_union(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item, write!(w, "<h2 class='fields'>Fields</h2>")?; for (field, ty) in fields { write!(w, "<span id='{shortty}.{name}' class='{shortty}'><code>{name}: {ty}</code> - </span><span class='stab {stab}'></span>", + </span>", shortty = ItemType::StructField, - stab = field.stability_class(), name = field.name.as_ref().unwrap(), ty = ty)?; + if let Some(stability_class) = field.stability_class() { + write!(w, "<span class='stab {stab}'></span>", + stab = stability_class)?; + } + write!(w, "</span>")?; document(w, cx, field)?; } } |
