Commit 8d5e3a2f33

Andrew Kelley <andrew@ziglang.org>
2019-10-09 21:52:55
generated docs: separate section for namespaces
if a type is a struct with no fields, then it goes in the namespaces section.
1 parent c4e4fa2
Changed files (2)
lib
std
special
lib/std/special/docs/index.html
@@ -321,6 +321,11 @@
       <ul id="listTypes">
       </ul>
     </div>
+    <div id="sectNamespaces" class="hidden">
+      <h2>Namespaces</h2>
+      <ul id="listNamespaces">
+      </ul>
+    </div>
     <div id="sectGlobalVars" class="hidden">
       <h2>Global Variables</h2>
       <table>
lib/std/special/docs/main.js
@@ -6,6 +6,8 @@
     var domListPkgs = document.getElementById("listPkgs");
     var domSectTypes = document.getElementById("sectTypes");
     var domListTypes = document.getElementById("listTypes");
+    var domSectNamespaces = document.getElementById("sectNamespaces");
+    var domListNamespaces = document.getElementById("listNamespaces");
     var domSectErrSets = document.getElementById("sectErrSets");
     var domListErrSets = document.getElementById("listErrSets");
     var domSectFns = document.getElementById("sectFns");
@@ -47,6 +49,7 @@
     var typeKindNoReturnId;
     var typeKindErrSetId;
     var typeKindErrUnionId;
+    var typeKindStructId;
     findTypeKinds();
 
     // for each package, is an array with packages to get to this one
@@ -104,6 +107,7 @@
         domFnDocs.classList.add("hidden");
         domSectPkgs.classList.add("hidden");
         domSectTypes.classList.add("hidden");
+        domSectNamespaces.classList.add("hidden");
         domSectErrSets.classList.add("hidden");
         domSectFns.classList.add("hidden");
         domSectFields.classList.add("hidden");
@@ -185,6 +189,13 @@
         return typeObj.kind === typeKindErrSetId;
     }
 
+    function typeIsStructWithNoFields(typeIndex) {
+        var typeObj = zigAnalysis.types[typeIndex];
+        if (typeObj.kind !== typeKindStructId)
+            return false;
+        return typeObj.fields == null || typeObj.fields.length === 0;
+    }
+
     function typeIsGenericFn(typeIndex) {
         var typeObj = zigAnalysis.types[typeIndex];
         if (typeObj.kind !== typeKindFnId) {
@@ -628,6 +639,7 @@
 
     function renderContainer(container) {
         var typesList = [];
+        var namespacesList = [];
         var errSetsList = [];
         var fnsList = [];
         var varsList = [];
@@ -641,6 +653,8 @@
                 if (decl.type == typeTypeId) {
                     if (typeIsErrSet(decl.value)) {
                         errSetsList.push(decl);
+                    } else if (typeIsStructWithNoFields(decl.value)) {
+                        namespacesList.push(decl);
                     } else {
                         typesList.push(decl);
                     }
@@ -659,6 +673,9 @@
         typesList.sort(function(a, b) {
             return operatorCompare(a.name, b.name);
         });
+        namespacesList.sort(function(a, b) {
+            return operatorCompare(a.name, b.name);
+        });
         errSetsList.sort(function(a, b) {
             return operatorCompare(a.name, b.name);
         });
@@ -680,6 +697,17 @@
             }
             domSectTypes.classList.remove("hidden");
         }
+        if (namespacesList.length !== 0) {
+            resizeDomList(domListNamespaces, namespacesList.length, '<li><a href="#"></a></li>');
+            for (var i = 0; i < namespacesList.length; i += 1) {
+                var liDom = domListNamespaces.children[i];
+                var aDom = liDom.children[0];
+                var decl = namespacesList[i];
+                aDom.textContent = decl.name;
+                aDom.setAttribute('href', navLinkDecl(decl.name));
+            }
+            domSectNamespaces.classList.remove("hidden");
+        }
 
         if (errSetsList.length !== 0) {
             resizeDomList(domListErrSets, errSetsList.length, '<li><a href="#"></a></li>');
@@ -816,6 +844,8 @@
                 typeKindErrSetId = i;
             } else if (zigAnalysis.typeKinds[i] === "ErrorUnion") {
                 typeKindErrUnionId = i;
+            } else if (zigAnalysis.typeKinds[i] === "Struct") {
+                typeKindStructId = i;
             }
         }
         if (typeKindTypeId == null) {
@@ -848,6 +878,9 @@
         if (typeKindErrUnionId == null) {
             throw new Error("No type kind 'ErrorUnion' found");
         }
+        if (typeKindStructId == null) {
+            throw new Error("No type kind 'Struct' found");
+        }
     }
 
     function findTypeTypeId() {