]> git.lizzy.rs Git - rust.git/commitdiff
rustdoc: fold fields for enum struct variants into a docblock
authorQuietMisdreavus <bryan@icesoldier.me>
Fri, 11 Nov 2016 22:41:00 +0000 (16:41 -0600)
committerQuietMisdreavus <bryan@icesoldier.me>
Sat, 12 Nov 2016 19:59:17 +0000 (13:59 -0600)
src/librustdoc/html/render.rs
src/librustdoc/html/static/main.js
src/librustdoc/html/static/rustdoc.css

index 2db771d771119c6192bde2af5b17fdfe9728469f..ddbdb28c2adea046b8d9c8e7371e5cec8b915f2e 100644 (file)
@@ -2467,8 +2467,13 @@ fn item_enum(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
             if let clean::VariantItem(Variant {
                 kind: VariantKind::Struct(ref s)
             }) = variant.inner {
-                write!(w, "<h3 class='fields'>Fields</h3>\n
-                           <table>")?;
+                let variant_id = derive_id(format!("{}.{}.fields",
+                                                   ItemType::Variant,
+                                                   variant.name.as_ref().unwrap()));
+                write!(w, "<span class='docblock autohide sub-variant' id='{id}'>",
+                       id = variant_id)?;
+                write!(w, "<h3 class='fields'>Fields of <code>{name}</code></h3>\n
+                           <table>", name = variant.name.as_ref().unwrap())?;
                 for field in &s.fields {
                     use clean::StructFieldItem;
                     if let StructFieldItem(ref ty) = field.inner {
@@ -2492,7 +2497,7 @@ fn item_enum(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
                         write!(w, "</td></tr>")?;
                     }
                 }
-                write!(w, "</table>")?;
+                write!(w, "</table></span>")?;
             }
             render_stability_since(w, variant, it)?;
         }
index 474d2bbe7fcb54c6d4880a3b792f91c05b5968da..5ffab949d019c38afde76552f7d07b9e5d2bd861 100644 (file)
                     .html('&nbsp;Expand&nbsp;description'));
         var wrapper = $("<div class='toggle-wrapper'>").append(mainToggle);
         $("#main > .docblock").before(wrapper);
+
+        $(".docblock.autohide").each(function() {
+            var wrap = $(this).prev();
+            if (wrap.is(".toggle-wrapper")) {
+                var toggle = wrap.children().first();
+                if ($(this).children().first().is("h3")) {
+                    toggle.children(".toggle-label")
+                          .text(" Show " + $(this).children().first().text());
+                }
+                $(this).hide();
+                wrap.addClass("collapsed");
+                toggle.children(".inner").text(labelForToggleButton(true));
+                toggle.children(".toggle-label").show();
+            }
+        });
+
         var mainToggle =
             $(toggle).append(
                 $('<span/>', {'class': 'toggle-label'})
index 46b34b5a638b337876fd513601561115bee8091d..35d43314c702c0a8d57fd845de247376d609e1d7 100644 (file)
@@ -339,6 +339,10 @@ h4 > code, h3 > code, .invisible > code {
        border-bottom: 1px solid;
 }
 
+.fields + table {
+       margin-bottom: 1em;
+}
+
 .content .item-list {
        list-style-type: none;
        padding: 0;
@@ -663,6 +667,10 @@ span.since {
        margin-top: 5px;
 }
 
+.sub-variant, .sub-variant > h3 {
+       margin-top: 0 !important;
+}
+
 .enum > .toggle-wrapper + .docblock, .struct > .toggle-wrapper + .docblock {
        margin-left: 30px;
        margin-bottom: 20px;