zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 3ce83e879b48273ada1e4e3d795967004f7d21b3 (tree)
parent a5714ddb973305b38703a69093af066514bdd8f8
Author: Andrew Kelley <andrew@ziglang.org>
Date:   Wed,  9 Oct 2019 15:22:26 -0400

generated docs: show error sets pages

also favicon, improve error sets css, syntax awareness of
noreturn

Diffstat:
Mlib/std/special/docs/index.html | 10++++------
Mlib/std/special/docs/main.js | 101++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------
2 files changed, 71 insertions(+), 40 deletions(-)

diff --git a/lib/std/special/docs/index.html b/lib/std/special/docs/index.html @@ -3,7 +3,7 @@ <head> <meta charset="utf-8"> <title>Documentation - Zig</title> - <link rel="icon" href="favicon.png"> + <link rel="icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAgklEQVR4AWMYWuD7EllJIM4G4g4g5oIJ/odhOJ8wToOxSTXgNxDHoeiBMfA4+wGShjyYOCkG/IGqWQziEzYAoUAeiF9D5U+DxEg14DRU7jWIT5IBIOdCxf+A+CQZAAoopEB7QJwBCBwHiip8UYmRdrAlDpIMgApwQZNnNii5Dq0MBgCxxycBnwEd+wAAAABJRU5ErkJggg=="> <style type="text/css"> body { font-family: system-ui, -apple-system, Roboto, "Segoe UI", sans-serif; @@ -127,7 +127,7 @@ text-align: center; font-size: 1.5em; } - dt, dd { + #helpDialog dt, #helpDialog dd { display: inline; margin: 0 0.2em; } @@ -152,10 +152,8 @@ background-color: #93e196; } - #tableFnErrors tr td:first-child{ - text-align: right; + #tableFnErrors dt { font-weight: bold; - vertical-align: top; } #sectGlobalVars td, #sectFns td, #sectFields td { @@ -297,7 +295,7 @@ <div id="fnErrorsAnyError"> <p><span class="tok-type">anyerror</span> means the error set is known only at runtime.</p> </div> - <table id="tableFnErrors"><tbody id="listFnErrors"></tbody></table> + <div id="tableFnErrors"><dl id="listFnErrors"></dl></div> </div> <div id="fnExamples" class="hidden"></div> <div id="fnNoExamples" class="hidden"> diff --git a/lib/std/special/docs/main.js b/lib/std/special/docs/main.js @@ -44,6 +44,7 @@ var typeKindIntId; var typeKindBoolId; var typeKindVoidId; + var typeKindNoReturnId; var typeKindErrSetId; var typeKindErrUnionId; findTypeKinds(); @@ -171,7 +172,9 @@ } throw new Error("docs for this decl which is not a container"); } - renderType(lastDecl); + if (lastDecl.kind != null) { + renderType(lastDecl); + } if (lastDecl.pubDecls != null) { renderContainer(lastDecl); } @@ -211,38 +214,7 @@ } if (errSetTypeIndex != null) { var errSetType = zigAnalysis.types[errSetTypeIndex]; - if (errSetType.errors == null) { - domFnErrorsAnyError.classList.remove("hidden"); - } else { - var errorList = []; - for (var i = 0; i < errSetType.errors.length; i += 1) { - var errObj = zigAnalysis.errors[errSetType.errors[i]]; - var srcObj = zigAnalysis.astNodes[errObj.src]; - errorList.push({ - err: errObj, - docs: srcObj.docs, - }); - } - errorList.sort(function(a, b) { - return operatorCompare(a.err.name.toLowerCase(), b.err.name.toLowerCase()); - }); - - resizeDomList(domListFnErrors, errorList.length, '<tr><td></td><td></td></tr>'); - for (var i = 0; i < errorList.length; i += 1) { - var trDom = domListFnErrors.children[i]; - var nameTdDom = trDom.children[0]; - var descTdDom = trDom.children[1]; - nameTdDom.textContent = errorList[i].err.name; - var docs = errorList[i].docs; - if (docs != null) { - descTdDom.innerHTML = markdown(docs); - } else { - descTdDom.textContent = ""; - } - } - domTableFnErrors.classList.remove("hidden"); - } - domSectFnErrors.classList.remove("hidden"); + renderErrorSet(errSetType); } var protoSrcIndex; @@ -375,6 +347,19 @@ return navLink(curNav.pkgNames, curNav.declNames.concat([childName])); } + function resizeDomListDl(dlDom, desiredLen) { + // add the missing dom entries + var i, ev; + for (i = dlDom.childElementCount / 2; i < desiredLen; i += 1) { + dlDom.insertAdjacentHTML('beforeend', '<dt></dt><dd></dd>'); + } + // remove extra dom entries + while (desiredLen < dlDom.childElementCount / 2) { + dlDom.removeChild(dlDom.lastChild); + dlDom.removeChild(dlDom.lastChild); + } + } + function resizeDomList(listDom, desiredLen, templateHtml) { // add the missing dom entries var i, ev; @@ -498,6 +483,12 @@ } else { return "void"; } + case typeKindNoReturnId: + if (wantHtml) { + return '<span class="tok-type">noreturn</span>'; + } else { + return "noreturn"; + } case typeKindErrSetId: if (typeObj.errors == null) { if (wantHtml) { @@ -569,9 +560,46 @@ function renderType(typeObj) { var name = typeName(typeObj, false, false); if (name != null && name != "") { - domHdrName.innerText = zigAnalysis.typeKinds[typeObj.kind] + " " + name; + domHdrName.innerText = name + " (" + zigAnalysis.typeKinds[typeObj.kind] + ")"; domHdrName.classList.remove("hidden"); } + if (typeObj.kind == typeKindErrSetId) { + renderErrorSet(typeObj); + } + } + + function renderErrorSet(errSetType) { + if (errSetType.errors == null) { + domFnErrorsAnyError.classList.remove("hidden"); + } else { + var errorList = []; + for (var i = 0; i < errSetType.errors.length; i += 1) { + var errObj = zigAnalysis.errors[errSetType.errors[i]]; + var srcObj = zigAnalysis.astNodes[errObj.src]; + errorList.push({ + err: errObj, + docs: srcObj.docs, + }); + } + errorList.sort(function(a, b) { + return operatorCompare(a.err.name.toLowerCase(), b.err.name.toLowerCase()); + }); + + resizeDomListDl(domListFnErrors, errorList.length); + for (var i = 0; i < errorList.length; i += 1) { + var nameTdDom = domListFnErrors.children[i * 2 + 0]; + var descTdDom = domListFnErrors.children[i * 2 + 1]; + nameTdDom.textContent = errorList[i].err.name; + var docs = errorList[i].docs; + if (docs != null) { + descTdDom.innerHTML = markdown(docs); + } else { + descTdDom.textContent = ""; + } + } + domTableFnErrors.classList.remove("hidden"); + } + domSectFnErrors.classList.remove("hidden"); } function allCompTimeFnCallsHaveTypeResult(typeIndex, value) { @@ -782,6 +810,8 @@ typeKindBoolId = i; } else if (zigAnalysis.typeKinds[i] === "Void") { typeKindVoidId = i; + } else if (zigAnalysis.typeKinds[i] === "NoReturn") { + typeKindNoReturnId = i; } else if (zigAnalysis.typeKinds[i] === "ErrorSet") { typeKindErrSetId = i; } else if (zigAnalysis.typeKinds[i] === "ErrorUnion") { @@ -809,6 +839,9 @@ if (typeKindVoidId == null) { throw new Error("No type kind 'Void' found"); } + if (typeKindNoReturnId == null) { + throw new Error("No type kind 'Void' found"); + } if (typeKindErrSetId == null) { throw new Error("No type kind 'ErrorSet' found"); }