generated docs: separate section for namespaces

if a type is a struct with no fields, then it goes in the namespaces
section.
This commit is contained in:
Andrew Kelley 2019-10-09 15:52:55 -04:00
parent c4e4fa2287
commit 8d5e3a2f33
No known key found for this signature in database
GPG Key ID: 7C5F548F728501A9
2 changed files with 38 additions and 0 deletions

View File

@ -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>

View File

@ -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() {