mirror of
https://github.com/ziglang/zig.git
synced 2026-01-21 14:55:25 +00:00
autodoc: add declval support to docs js
This commit is contained in:
parent
75d39a97a2
commit
38281c8ed4
@ -43,8 +43,6 @@
|
||||
|
||||
/* layout */
|
||||
.canvas {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
overflow: hidden;
|
||||
@ -55,21 +53,12 @@
|
||||
background-color: var(--bg-color);
|
||||
}
|
||||
|
||||
.banner {
|
||||
background-color: darkred;
|
||||
text-align: center;
|
||||
color: white;
|
||||
padding: 15px 5px;
|
||||
}
|
||||
|
||||
.banner a {
|
||||
color: bisque;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.flex-main {
|
||||
display: flex;
|
||||
overflow-y: hidden;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
justify-content: center;
|
||||
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
@ -526,7 +515,6 @@
|
||||
</style>
|
||||
</head>
|
||||
<body class="canvas">
|
||||
<div class="banner">These docs are experimental. <a href="https://kristoff.it/blog/zig-new-relationship-llvm/">Progress depends on the self-hosted compiler</a>, <a href="https://github.com/ziglang/zig/wiki/How-to-read-the-standard-library-source-code">consider reading the stdlib source in the meantime</a>.</div>
|
||||
<div class="flex-main">
|
||||
<div class="flex-filler"></div>
|
||||
<div class="flex-left sidebar">
|
||||
@ -541,8 +529,14 @@
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
<div id="sectMainPkg" class="hidden">
|
||||
<h2><span>Main Package</span></h2>
|
||||
<ul class="packages">
|
||||
<li><a id="mainPkg" class="" href=""></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="sectPkgs" class="hidden">
|
||||
<h2><span>Packages</span></h2>
|
||||
<h2><span>Dependencies</span></h2>
|
||||
<ul id="listPkgs" class="packages"></ul>
|
||||
</div>
|
||||
<div id="sectInfo" class="hidden">
|
||||
@ -588,7 +582,6 @@
|
||||
<div id="sectSearchResults" class="hidden">
|
||||
<h2>Search Results</h2>
|
||||
<ul id="listSearchResults"></ul>
|
||||
<p id="sectSearchAllResultsLink" class="hidden"><a href="">show all results</a></p>
|
||||
</div>
|
||||
<div id="sectSearchNoResults" class="hidden">
|
||||
<h2>No Results Found</h2>
|
||||
|
||||
442
lib/docs/main.js
442
lib/docs/main.js
@ -2,6 +2,7 @@
|
||||
var domStatus = document.getElementById("status");
|
||||
var domSectNav = document.getElementById("sectNav");
|
||||
var domListNav = document.getElementById("listNav");
|
||||
var domSectMainPkg = document.getElementById("sectMainPkg");
|
||||
var domSectPkgs = document.getElementById("sectPkgs");
|
||||
var domListPkgs = document.getElementById("listPkgs");
|
||||
var domSectTypes = document.getElementById("sectTypes");
|
||||
@ -35,7 +36,6 @@
|
||||
var domSectSearchResults = document.getElementById("sectSearchResults");
|
||||
var domListSearchResults = document.getElementById("listSearchResults");
|
||||
var domSectSearchNoResults = document.getElementById("sectSearchNoResults");
|
||||
var domSectSearchAllResultsLink = document.getElementById("sectSearchAllResultsLink");
|
||||
var domSectInfo = document.getElementById("sectInfo");
|
||||
var domTdTarget = document.getElementById("tdTarget");
|
||||
var domTdZigVer = document.getElementById("tdZigVer");
|
||||
@ -43,22 +43,11 @@
|
||||
var domHelpModal = document.getElementById("helpDialog");
|
||||
|
||||
var searchTimer = null;
|
||||
var searchTrimResults = true;
|
||||
var escapeHtmlReplacements = { "&": "&", '"': """, "<": "<", ">": ">" };
|
||||
|
||||
var typeKinds = indexTypeKinds();
|
||||
var typeTypeId = findTypeTypeId();
|
||||
var pointerSizeEnum = { One: 0, Many: 1, Slice: 2, C: 3 };
|
||||
var tokenKinds = {
|
||||
Keyword: 'tok-kw',
|
||||
String: 'tok-str',
|
||||
Builtin: 'tok-builtin',
|
||||
Comment: 'tok-comment',
|
||||
Function: 'tok-fn',
|
||||
Null: 'tok-null',
|
||||
Number: 'tok-number',
|
||||
Type: 'tok-type',
|
||||
};
|
||||
|
||||
// for each package, is an array with packages to get to this one
|
||||
var canonPkgPaths = computeCanonicalPackagePaths();
|
||||
@ -94,8 +83,6 @@
|
||||
var nodesToCallsMap = indexNodesToCalls();
|
||||
|
||||
domSearch.addEventListener('keydown', onSearchKeyDown, false);
|
||||
domSectSearchAllResultsLink.addEventListener('click', onClickSearchShowAllResults, false);
|
||||
|
||||
window.addEventListener('hashchange', onHashChange, false);
|
||||
window.addEventListener('keydown', onWindowKeyDown, false);
|
||||
onHashChange();
|
||||
@ -119,6 +106,7 @@
|
||||
domFnProto.classList.add("hidden");
|
||||
domSectParams.classList.add("hidden");
|
||||
domTldDocs.classList.add("hidden");
|
||||
domSectMainPkg.classList.add("hidden");
|
||||
domSectPkgs.classList.add("hidden");
|
||||
domSectTypes.classList.add("hidden");
|
||||
domSectNamespaces.classList.add("hidden");
|
||||
@ -127,7 +115,6 @@
|
||||
domSectFields.classList.add("hidden");
|
||||
domSectSearchResults.classList.add("hidden");
|
||||
domSectSearchNoResults.classList.add("hidden");
|
||||
domSectSearchAllResultsLink.classList.add("hidden");
|
||||
domSectInfo.classList.add("hidden");
|
||||
domHdrName.classList.add("hidden");
|
||||
domSectNav.classList.add("hidden");
|
||||
@ -269,19 +256,15 @@
|
||||
domFnNoExamples.classList.remove("hidden");
|
||||
} else if (calls != null) {
|
||||
if (fnObj.combined === undefined) fnObj.combined = allCompTimeFnCallsResult(calls);
|
||||
if (fnObj.combined != null) {
|
||||
renderContainer(fnObj.combined, calls.map(function (call) { return zigAnalysis.calls[call].result.value }));
|
||||
}
|
||||
if (fnObj.combined != null) renderContainer(fnObj.combined);
|
||||
|
||||
var domListFnExamplesFragment = createDomListFragment(calls.length, '<li></li>');
|
||||
resizeDomList(domListFnExamples, calls.length, '<li></li>');
|
||||
|
||||
for (var callI = 0; callI < calls.length; callI += 1) {
|
||||
var liDom = domListFnExamplesFragment.children[callI];
|
||||
var liDom = domListFnExamples.children[callI];
|
||||
liDom.innerHTML = getCallHtml(fnDecl, calls[callI]);
|
||||
}
|
||||
|
||||
domListFnExamples.innerHTML = "";
|
||||
domListFnExamples.appendChild(domListFnExamplesFragment);
|
||||
domFnExamples.classList.remove("hidden");
|
||||
} else if (instantiations != null) {
|
||||
// TODO
|
||||
@ -322,7 +305,7 @@
|
||||
return;
|
||||
}
|
||||
|
||||
var domListParamsFragment = createDomListFragment(docCount, '<div></div>');
|
||||
resizeDomList(domListParams, docCount, '<div></div>');
|
||||
var domIndex = 0;
|
||||
|
||||
for (var i = 0; i < fields.length; i += 1) {
|
||||
@ -331,7 +314,7 @@
|
||||
if (fieldNode.docs == null) {
|
||||
continue;
|
||||
}
|
||||
var divDom = domListParamsFragment.children[domIndex];
|
||||
var divDom = domListParams.children[domIndex];
|
||||
domIndex += 1;
|
||||
var argTypeIndex = typeObj.args[i];
|
||||
|
||||
@ -352,15 +335,12 @@
|
||||
}
|
||||
divDom.innerHTML = html;
|
||||
}
|
||||
|
||||
domListParams.innerHTML = "";
|
||||
domListParams.appendChild(domListParamsFragment);
|
||||
domSectParams.classList.remove("hidden");
|
||||
}
|
||||
|
||||
function renderNav() {
|
||||
var len = curNav.pkgNames.length + curNav.declNames.length;
|
||||
var domListNavFragment = createDomListFragment(len, '<li><a href="#"></a></li>');
|
||||
resizeDomList(domListNav, len, '<li><a href="#"></a></li>');
|
||||
var list = [];
|
||||
var hrefPkgNames = [];
|
||||
var hrefDeclNames = [];
|
||||
@ -380,7 +360,7 @@
|
||||
}
|
||||
|
||||
for (var i = 0; i < list.length; i += 1) {
|
||||
var liDom = domListNavFragment.children[i];
|
||||
var liDom = domListNav.children[i];
|
||||
var aDom = liDom.children[0];
|
||||
aDom.textContent = list[i].name;
|
||||
aDom.setAttribute('href', list[i].link);
|
||||
@ -391,8 +371,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
domListNav.innerHTML = "";
|
||||
domListNav.appendChild(domListNavFragment);
|
||||
domSectNav.classList.remove("hidden");
|
||||
}
|
||||
|
||||
@ -412,7 +390,6 @@
|
||||
var rootPkg = zigAnalysis.packages[zigAnalysis.rootPkg];
|
||||
var list = [];
|
||||
for (var key in rootPkg.table) {
|
||||
if (key === "root" && rootIsStd) continue;
|
||||
var pkgIndex = rootPkg.table[key];
|
||||
if (zigAnalysis.packages[pkgIndex] == null) continue;
|
||||
list.push({
|
||||
@ -420,14 +397,27 @@
|
||||
pkg: pkgIndex,
|
||||
});
|
||||
}
|
||||
|
||||
{
|
||||
var aDom = domSectMainPkg.children[1].children[0].children[0];
|
||||
aDom.textContent = zigAnalysis.params.rootName;
|
||||
aDom.setAttribute('href', navLinkPkg(zigAnalysis.rootPkg));
|
||||
if (zigAnalysis.params.rootName === curNav.pkgNames[0]) {
|
||||
aDom.classList.add("active");
|
||||
} else {
|
||||
aDom.classList.remove("active");
|
||||
}
|
||||
domSectMainPkg.classList.remove("hidden");
|
||||
}
|
||||
|
||||
list.sort(function(a, b) {
|
||||
return operatorCompare(a.name.toLowerCase(), b.name.toLowerCase());
|
||||
});
|
||||
|
||||
if (list.length !== 0) {
|
||||
var domListPkgsFragment = createDomListFragment(list.length, '<li><a href="#"></a></li>');
|
||||
resizeDomList(domListPkgs, list.length, '<li><a href="#"></a></li>');
|
||||
for (var i = 0; i < list.length; i += 1) {
|
||||
var liDom = domListPkgsFragment.children[i];
|
||||
var liDom = domListPkgs.children[i];
|
||||
var aDom = liDom.children[0];
|
||||
aDom.textContent = list[i].name;
|
||||
aDom.setAttribute('href', navLinkPkg(list[i].pkg));
|
||||
@ -438,8 +428,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
domListPkgs.innerHTML = "";
|
||||
domListPkgs.appendChild(domListPkgsFragment);
|
||||
domSectPkgs.classList.remove("hidden");
|
||||
}
|
||||
}
|
||||
@ -480,34 +468,50 @@
|
||||
return navLink(curNav.pkgNames, declNamesCopy);
|
||||
}
|
||||
|
||||
function createDomListFragment(desiredLen, templateHtml) {
|
||||
var domTemplate = document.createElement("template");
|
||||
domTemplate.innerHTML = templateHtml.repeat(desiredLen);
|
||||
return domTemplate.content;
|
||||
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 typeIndexName(typeIndex, wantHtml, wantLink, fnDecl, linkFnNameDecl, thisTypes) {
|
||||
if(thisTypes && thisTypes.includes(typeIndex)){
|
||||
return token('@This', tokenKinds.Builtin, wantHtml) + '()';
|
||||
function resizeDomList(listDom, desiredLen, templateHtml) {
|
||||
// add the missing dom entries
|
||||
var i, ev;
|
||||
for (i = listDom.childElementCount; i < desiredLen; i += 1) {
|
||||
listDom.insertAdjacentHTML('beforeend', templateHtml);
|
||||
}
|
||||
// remove extra dom entries
|
||||
while (desiredLen < listDom.childElementCount) {
|
||||
listDom.removeChild(listDom.lastChild);
|
||||
}
|
||||
}
|
||||
|
||||
function typeIndexName(typeIndex, wantHtml, wantLink, fnDecl, linkFnNameDecl) {
|
||||
var typeObj = zigAnalysis.types[typeIndex];
|
||||
var declNameOk = declCanRepresentTypeKind(typeObj.kind);
|
||||
if (wantLink) {
|
||||
var declIndex = getCanonTypeDecl(typeIndex);
|
||||
var declPath = getCanonDeclPath(declIndex);
|
||||
if (declPath == null) {
|
||||
return typeName(typeObj, wantHtml, wantLink, fnDecl, linkFnNameDecl, thisTypes);
|
||||
return typeName(typeObj, wantHtml, wantLink, fnDecl, linkFnNameDecl);
|
||||
}
|
||||
var name = (wantLink && declCanRepresentTypeKind(typeObj.kind)) ?
|
||||
declPath.declNames[declPath.declNames.length - 1] :
|
||||
typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl, thisTypes);
|
||||
typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl);
|
||||
if (wantLink && wantHtml) {
|
||||
return '<a href="' + navLink(declPath.pkgNames, declPath.declNames) + '">' + name + '</a>';
|
||||
} else {
|
||||
return name;
|
||||
}
|
||||
} else {
|
||||
return typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl, thisTypes);
|
||||
return typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl);
|
||||
}
|
||||
}
|
||||
|
||||
@ -545,57 +549,32 @@
|
||||
return typeIndexName(value, wantHtml, wantLink);
|
||||
case typeKinds.Fn:
|
||||
var fnObj = zigAnalysis.fns[value];
|
||||
var declPath = fnObj.decl && getCanonDeclPath(fnObj.decl);
|
||||
var fnName = declPath ? declPath.declNames.join('.') : '(unknown)';
|
||||
|
||||
if (!wantHtml) {
|
||||
return fnName;
|
||||
}
|
||||
|
||||
var str = '<span class="tok-fn">';
|
||||
if (wantLink && declPath != null) {
|
||||
str += '<a href="' + navLink(declPath.pkgNames, declPath.declNames) + '">';
|
||||
str += escapeHtml(fnName);
|
||||
str += '</a>';
|
||||
} else {
|
||||
str += escapeHtml(fnName);
|
||||
}
|
||||
str += '</span>';
|
||||
return str;
|
||||
return typeIndexName(fnObj.type, wantHtml, wantLink);
|
||||
case typeKinds.Int:
|
||||
return token(value, tokenKinds.Number, wantHtml);
|
||||
case typeKinds.Optional:
|
||||
if(value === 'null'){
|
||||
return token(value, tokenKinds.Null, wantHtml);
|
||||
if (wantHtml) {
|
||||
return '<span class="tok-number">' + value + '</span>';
|
||||
} else {
|
||||
console.trace("TODO non-null optional value printing");
|
||||
return "TODO";
|
||||
return value + "";
|
||||
}
|
||||
case typeKinds.Bool:
|
||||
return token(value, tokenKinds.Null, wantHtml);
|
||||
default:
|
||||
console.trace("TODO implement getValueText for this type:", zigAnalysis.typeKinds[typeObj.kind]);
|
||||
return "TODO";
|
||||
}
|
||||
}
|
||||
|
||||
function typeName(typeObj, wantHtml, wantSubLink, fnDecl, linkFnNameDecl, thisTypes) {
|
||||
function typeName(typeObj, wantHtml, wantSubLink, fnDecl, linkFnNameDecl) {
|
||||
switch (typeObj.kind) {
|
||||
case typeKinds.Array:
|
||||
var name = "[";
|
||||
name += token(typeObj.len, tokenKinds.Number, wantHtml);
|
||||
if (wantHtml) {
|
||||
name += '<span class="tok-number">' + typeObj.len + '</span>';
|
||||
} else {
|
||||
name += typeObj.len;
|
||||
}
|
||||
name += "]";
|
||||
name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null, null, thisTypes);
|
||||
return name;
|
||||
case typeKinds.Vector:
|
||||
var name = "Vector(";
|
||||
name += token(typeObj.len, tokenKinds.Number, wantHtml);
|
||||
name += ", ";
|
||||
name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null, null, thisTypes);
|
||||
name += ")";
|
||||
name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null);
|
||||
return name;
|
||||
case typeKinds.Optional:
|
||||
return "?" + typeIndexName(typeObj.child, wantHtml, wantSubLink, fnDecl, linkFnNameDecl, thisTypes);
|
||||
return "?" + typeIndexName(typeObj.child, wantHtml, wantSubLink, fnDecl, linkFnNameDecl);
|
||||
case typeKinds.Pointer:
|
||||
var name = "";
|
||||
switch (typeObj.len) {
|
||||
@ -614,48 +593,112 @@
|
||||
break;
|
||||
}
|
||||
if (typeObj['const']) {
|
||||
name += token('const', tokenKinds.Keyword, wantHtml) + ' ';
|
||||
if (wantHtml) {
|
||||
name += '<span class="tok-kw">const</span> ';
|
||||
} else {
|
||||
name += "const ";
|
||||
}
|
||||
}
|
||||
if (typeObj['volatile']) {
|
||||
name += token('volatile', tokenKinds.Keyword, wantHtml) + ' ';
|
||||
if (wantHtml) {
|
||||
name += '<span class="tok-kw">volatile</span> ';
|
||||
} else {
|
||||
name += "volatile ";
|
||||
}
|
||||
}
|
||||
if (typeObj.align != null) {
|
||||
name += token('align', tokenKinds.Keyword, wantHtml) + '(';
|
||||
name += token(typeObj.align, tokenKinds.Number, wantHtml);
|
||||
|
||||
if (wantHtml) {
|
||||
name += '<span class="tok-kw">align</span>(';
|
||||
} else {
|
||||
name += "align(";
|
||||
}
|
||||
if (wantHtml) {
|
||||
name += '<span class="tok-number">' + typeObj.align + '</span>';
|
||||
} else {
|
||||
name += typeObj.align;
|
||||
}
|
||||
if (typeObj.hostIntBytes != null) {
|
||||
name += ":";
|
||||
name += token(typeObj.bitOffsetInHost, tokenKinds.Number, wantHtml);
|
||||
if (wantHtml) {
|
||||
name += '<span class="tok-number">' + typeObj.bitOffsetInHost + '</span>';
|
||||
} else {
|
||||
name += typeObj.bitOffsetInHost;
|
||||
}
|
||||
name += ":";
|
||||
name += token(typeObj.hostIntBytes, tokenKinds.Number, wantHtml);
|
||||
if (wantHtml) {
|
||||
name += '<span class="tok-number">' + typeObj.hostIntBytes + '</span>';
|
||||
} else {
|
||||
name += typeObj.hostIntBytes;
|
||||
}
|
||||
}
|
||||
name += ") ";
|
||||
}
|
||||
name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null, null, thisTypes);
|
||||
name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null);
|
||||
return name;
|
||||
case typeKinds.Float:
|
||||
return token('f' + typeObj.bits, tokenKinds.Type, wantHtml);
|
||||
if (wantHtml) {
|
||||
return '<span class="tok-type">f' + typeObj.bits + '</span>';
|
||||
} else {
|
||||
return "f" + typeObj.bits;
|
||||
}
|
||||
case typeKinds.Int:
|
||||
var signed = (typeObj.i != null) ? 'i' : 'u';
|
||||
var bits = typeObj[signed];
|
||||
return token(signed + bits, tokenKinds.Type, wantHtml);
|
||||
return '<span class="tok-type">' + typeObj.name + '</span>';
|
||||
// var signed = (typeObj.i != null) ? 'i' : 'u';
|
||||
// var bits = typeObj[signed];
|
||||
// if (wantHtml) {
|
||||
// return '<span class="tok-type">' + signed + bits + '</span>';
|
||||
// } else {
|
||||
// return signed + bits;
|
||||
// }
|
||||
case typeKinds.ComptimeInt:
|
||||
return token('comptime_int', tokenKinds.Type, wantHtml);
|
||||
if (wantHtml) {
|
||||
return '<span class="tok-type">comptime_int</span>';
|
||||
} else {
|
||||
return "comptime_int";
|
||||
}
|
||||
case typeKinds.ComptimeFloat:
|
||||
return token('comptime_float', tokenKinds.Type, wantHtml);
|
||||
if (wantHtml) {
|
||||
return '<span class="tok-type">comptime_float</span>';
|
||||
} else {
|
||||
return "comptime_float";
|
||||
}
|
||||
case typeKinds.Type:
|
||||
return token('type', tokenKinds.Type, wantHtml);
|
||||
if (wantHtml) {
|
||||
return '<span class="tok-type">type</span>';
|
||||
} else {
|
||||
return "type";
|
||||
}
|
||||
case typeKinds.Bool:
|
||||
return token('bool', tokenKinds.Type, wantHtml);
|
||||
if (wantHtml) {
|
||||
return '<span class="tok-type">bool</span>';
|
||||
} else {
|
||||
return "bool";
|
||||
}
|
||||
case typeKinds.Void:
|
||||
return token('void', tokenKinds.Type, wantHtml);
|
||||
if (wantHtml) {
|
||||
return '<span class="tok-type">void</span>';
|
||||
} else {
|
||||
return "void";
|
||||
}
|
||||
case typeKinds.EnumLiteral:
|
||||
return token('(enum literal)', tokenKinds.Type, wantHtml);
|
||||
if (wantHtml) {
|
||||
return '<span class="tok-type">(enum literal)</span>';
|
||||
} else {
|
||||
return "(enum literal)";
|
||||
}
|
||||
case typeKinds.NoReturn:
|
||||
return token('noreturn', tokenKinds.Type, wantHtml);
|
||||
if (wantHtml) {
|
||||
return '<span class="tok-type">noreturn</span>';
|
||||
} else {
|
||||
return "noreturn";
|
||||
}
|
||||
case typeKinds.ErrorSet:
|
||||
if (typeObj.errors == null) {
|
||||
return token('anyerror', tokenKinds.Type, wantHtml);
|
||||
if (wantHtml) {
|
||||
return '<span class="tok-type">anyerror</span>';
|
||||
} else {
|
||||
return "anyerror";
|
||||
}
|
||||
} else {
|
||||
if (wantHtml) {
|
||||
return escapeHtml(typeObj.name);
|
||||
@ -665,12 +708,12 @@
|
||||
}
|
||||
case typeKinds.ErrorUnion:
|
||||
var errSetTypeObj = zigAnalysis.types[typeObj.err];
|
||||
var payloadHtml = typeIndexName(typeObj.payload, wantHtml, wantSubLink, null, null, thisTypes);
|
||||
var payloadHtml = typeIndexName(typeObj.payload, wantHtml, wantSubLink, null);
|
||||
if (fnDecl != null && errSetTypeObj.fn === fnDecl.value) {
|
||||
// function index parameter supplied and this is the inferred error set of it
|
||||
return "!" + payloadHtml;
|
||||
} else {
|
||||
return typeIndexName(typeObj.err, wantHtml, wantSubLink, null, null, thisTypes) + "!" + payloadHtml;
|
||||
return typeIndexName(typeObj.err, wantHtml, wantSubLink, null) + "!" + payloadHtml;
|
||||
}
|
||||
case typeKinds.Fn:
|
||||
var payloadHtml = "";
|
||||
@ -716,11 +759,19 @@
|
||||
}
|
||||
|
||||
if (paramNode.noalias) {
|
||||
payloadHtml += token('noalias', tokenKinds.Keyword, wantHtml) + ' ';
|
||||
if (wantHtml) {
|
||||
payloadHtml += '<span class="tok-kw">noalias</span> ';
|
||||
} else {
|
||||
payloadHtml += 'noalias ';
|
||||
}
|
||||
}
|
||||
|
||||
if (paramNode.comptime) {
|
||||
payloadHtml += token('comptime', tokenKinds.Keyword, wantHtml) + ' ';
|
||||
if (wantHtml) {
|
||||
payloadHtml += '<span class="tok-kw">comptime</span> ';
|
||||
} else {
|
||||
payloadHtml += 'comptime ';
|
||||
}
|
||||
}
|
||||
|
||||
var paramName = paramNode.name;
|
||||
@ -735,30 +786,24 @@
|
||||
if (isVarArgs && i === typeObj.args.length - 1) {
|
||||
payloadHtml += '...';
|
||||
} else if (argTypeIndex != null) {
|
||||
payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink, null, null, thisTypes);
|
||||
payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink);
|
||||
} else if (wantHtml) {
|
||||
payloadHtml += '<span class="tok-kw">var</span>';
|
||||
} else {
|
||||
payloadHtml += token('anytype', tokenKinds.Keyword, wantHtml);
|
||||
payloadHtml += 'var';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
payloadHtml += ') ';
|
||||
if (typeObj.ret != null) {
|
||||
payloadHtml += typeIndexName(typeObj.ret, wantHtml, wantSubLink, fnDecl, null, thisTypes);
|
||||
payloadHtml += typeIndexName(typeObj.ret, wantHtml, wantSubLink, fnDecl);
|
||||
} else if (wantHtml) {
|
||||
payloadHtml += '<span class="tok-kw">var</span>';
|
||||
} else {
|
||||
payloadHtml += token('anytype', tokenKinds.Keyword, wantHtml);
|
||||
payloadHtml += 'var';
|
||||
}
|
||||
return payloadHtml;
|
||||
case typeKinds.Frame:
|
||||
var fnObj = zigAnalysis.fns[typeObj.fn];
|
||||
return '@Frame(' + getValueText(fnObj.type, typeObj.fn, wantHtml, wantSubLink) + ')';
|
||||
case typeKinds.AnyFrame:
|
||||
var name = token('anyframe', tokenKinds.Keyword, wantHtml);
|
||||
if (typeObj.result) {
|
||||
name += "->";
|
||||
name += typeIndexName(typeObj.result, wantHtml, wantSubLink, null, null, thisTypes);
|
||||
}
|
||||
return name;
|
||||
default:
|
||||
if (wantHtml) {
|
||||
return escapeHtml(typeObj.name);
|
||||
@ -801,10 +846,10 @@
|
||||
return operatorCompare(a.err.name.toLowerCase(), b.err.name.toLowerCase());
|
||||
});
|
||||
|
||||
var domListFnErrorsFragment = createDomListFragment(errorList.length, "<dt></dt><dd></dd>");
|
||||
resizeDomListDl(domListFnErrors, errorList.length);
|
||||
for (var i = 0; i < errorList.length; i += 1) {
|
||||
var nameTdDom = domListFnErrorsFragment.children[i * 2 + 0];
|
||||
var descTdDom = domListFnErrorsFragment.children[i * 2 + 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) {
|
||||
@ -813,8 +858,6 @@
|
||||
descTdDom.textContent = "";
|
||||
}
|
||||
}
|
||||
domListFnErrors.innerHTML = "";
|
||||
domListFnErrors.appendChild(domListFnErrorsFragment);
|
||||
domTableFnErrors.classList.remove("hidden");
|
||||
}
|
||||
domSectFnErrors.classList.remove("hidden");
|
||||
@ -941,7 +984,7 @@
|
||||
domFnProto.classList.remove("hidden");
|
||||
}
|
||||
|
||||
function renderContainer(container, thisTypes) {
|
||||
function renderContainer(container) {
|
||||
var typesList = [];
|
||||
var namespacesList = [];
|
||||
var errSetsList = [];
|
||||
@ -994,56 +1037,50 @@
|
||||
}
|
||||
|
||||
if (typesList.length !== 0) {
|
||||
var domListTypesFragment = createDomListFragment(typesList.length, '<li><a href="#"></a></li>');
|
||||
resizeDomList(domListTypes, typesList.length, '<li><a href="#"></a></li>');
|
||||
for (var i = 0; i < typesList.length; i += 1) {
|
||||
var liDom = domListTypesFragment.children[i];
|
||||
var liDom = domListTypes.children[i];
|
||||
var aDom = liDom.children[0];
|
||||
var decl = typesList[i];
|
||||
aDom.textContent = decl.name;
|
||||
aDom.setAttribute('href', navLinkDecl(decl.name));
|
||||
}
|
||||
domListTypes.innerHTML = "";
|
||||
domListTypes.appendChild(domListTypesFragment);
|
||||
domSectTypes.classList.remove("hidden");
|
||||
}
|
||||
if (namespacesList.length !== 0) {
|
||||
var domListNamespacesFragment = createDomListFragment(namespacesList.length, '<li><a href="#"></a></li>');
|
||||
resizeDomList(domListNamespaces, namespacesList.length, '<li><a href="#"></a></li>');
|
||||
for (var i = 0; i < namespacesList.length; i += 1) {
|
||||
var liDom = domListNamespacesFragment.children[i];
|
||||
var liDom = domListNamespaces.children[i];
|
||||
var aDom = liDom.children[0];
|
||||
var decl = namespacesList[i];
|
||||
aDom.textContent = decl.name;
|
||||
aDom.setAttribute('href', navLinkDecl(decl.name));
|
||||
}
|
||||
domListNamespaces.innerHTML = "";
|
||||
domListNamespaces.appendChild(domListNamespacesFragment);
|
||||
domSectNamespaces.classList.remove("hidden");
|
||||
}
|
||||
|
||||
if (errSetsList.length !== 0) {
|
||||
var domListErrSetsFragment = createDomListFragment(errSetsList.length, '<li><a href="#"></a></li>');
|
||||
resizeDomList(domListErrSets, errSetsList.length, '<li><a href="#"></a></li>');
|
||||
for (var i = 0; i < errSetsList.length; i += 1) {
|
||||
var liDom = domListErrSetsFragment.children[i];
|
||||
var liDom = domListErrSets.children[i];
|
||||
var aDom = liDom.children[0];
|
||||
var decl = errSetsList[i];
|
||||
aDom.textContent = decl.name;
|
||||
aDom.setAttribute('href', navLinkDecl(decl.name));
|
||||
}
|
||||
domListErrSets.innerHTML = "";
|
||||
domListErrSets.appendChild(domListErrSetsFragment);
|
||||
domSectErrSets.classList.remove("hidden");
|
||||
}
|
||||
|
||||
if (fnsList.length !== 0) {
|
||||
var domListFnsFragment = createDomListFragment(fnsList.length, '<tr><td></td><td></td></tr>');
|
||||
resizeDomList(domListFns, fnsList.length, '<tr><td></td><td></td></tr>');
|
||||
for (var i = 0; i < fnsList.length; i += 1) {
|
||||
var decl = fnsList[i];
|
||||
var trDom = domListFnsFragment.children[i];
|
||||
var trDom = domListFns.children[i];
|
||||
|
||||
var tdFnCode = trDom.children[0];
|
||||
var tdDesc = trDom.children[1];
|
||||
|
||||
tdFnCode.innerHTML = typeIndexName(decl.type, true, true, decl, navLinkDecl(decl.name), thisTypes);
|
||||
tdFnCode.innerHTML = typeIndexName(decl.type, true, true, decl, navLinkDecl(decl.name));
|
||||
|
||||
var docs = zigAnalysis.astNodes[decl.src].docs;
|
||||
if (docs != null) {
|
||||
@ -1052,19 +1089,17 @@
|
||||
tdDesc.textContent = "";
|
||||
}
|
||||
}
|
||||
domListFns.innerHTML = "";
|
||||
domListFns.appendChild(domListFnsFragment);
|
||||
domSectFns.classList.remove("hidden");
|
||||
}
|
||||
|
||||
if (container.fields != null && container.fields.length !== 0) {
|
||||
var domListFieldsFragment = createDomListFragment(container.fields.length, '<div></div>');
|
||||
resizeDomList(domListFields, container.fields.length, '<div></div>');
|
||||
|
||||
var containerNode = zigAnalysis.astNodes[container.src];
|
||||
for (var i = 0; i < container.fields.length; i += 1) {
|
||||
var field = container.fields[i];
|
||||
var fieldNode = zigAnalysis.astNodes[containerNode.fields[i]];
|
||||
var divDom = domListFieldsFragment.children[i];
|
||||
var divDom = domListFields.children[i];
|
||||
|
||||
var html = '<div class="mobile-scroll-container"><pre class="scroll-item">' + escapeHtml(fieldNode.name);
|
||||
|
||||
@ -1073,7 +1108,16 @@
|
||||
} else {
|
||||
html += ": ";
|
||||
if (typeof(field) === 'object') {
|
||||
html += '<span class="tok-kw">var</span>';
|
||||
if (field.failure === true) {
|
||||
html += '<span class="tok-kw" style="color:red;">#FAILURE#</span>';
|
||||
} else if ("decl_ref" in field) {
|
||||
var name = zigAnalysis.decls[field.decl_ref].name;
|
||||
html += '<a href="'+navLinkDecl(name)+'">';
|
||||
html += '<span class="tok-kw" style="color:lightblue;">'+ name +'</span>';
|
||||
html += '</a>';
|
||||
} else {
|
||||
html += '<span class="tok-kw">var</span>';
|
||||
}
|
||||
} else {
|
||||
html += typeIndexName(field, true, true);
|
||||
}
|
||||
@ -1087,17 +1131,15 @@
|
||||
}
|
||||
divDom.innerHTML = html;
|
||||
}
|
||||
domListFields.innerHTML = "";
|
||||
domListFields.appendChild(domListFieldsFragment);
|
||||
domSectFields.classList.remove("hidden");
|
||||
}
|
||||
|
||||
if (varsList.length !== 0) {
|
||||
var domListGlobalVarsFragment = createDomListFragment(varsList.length,
|
||||
resizeDomList(domListGlobalVars, varsList.length,
|
||||
'<tr><td><a href="#"></a></td><td></td><td></td></tr>');
|
||||
for (var i = 0; i < varsList.length; i += 1) {
|
||||
var decl = varsList[i];
|
||||
var trDom = domListGlobalVarsFragment.children[i];
|
||||
var trDom = domListGlobalVars.children[i];
|
||||
|
||||
var tdName = trDom.children[0];
|
||||
var tdNameA = tdName.children[0];
|
||||
@ -1116,17 +1158,15 @@
|
||||
tdDesc.textContent = "";
|
||||
}
|
||||
}
|
||||
domListGlobalVars.innerHTML = "";
|
||||
domListGlobalVars.appendChild(domListGlobalVarsFragment);
|
||||
domSectGlobalVars.classList.remove("hidden");
|
||||
}
|
||||
|
||||
if (valsList.length !== 0) {
|
||||
var domListValuesFragment = createDomListFragment(valsList.length,
|
||||
resizeDomList(domListValues, valsList.length,
|
||||
'<tr><td><a href="#"></a></td><td></td><td></td></tr>');
|
||||
for (var i = 0; i < valsList.length; i += 1) {
|
||||
var decl = valsList[i];
|
||||
var trDom = domListValuesFragment.children[i];
|
||||
var trDom = domListValues.children[i];
|
||||
|
||||
var tdName = trDom.children[0];
|
||||
var tdNameA = tdName.children[0];
|
||||
@ -1145,8 +1185,6 @@
|
||||
tdDesc.textContent = "";
|
||||
}
|
||||
}
|
||||
domListValues.innerHTML = "";
|
||||
domListValues.appendChild(domListValuesFragment);
|
||||
domSectValues.classList.remove("hidden");
|
||||
}
|
||||
}
|
||||
@ -1484,22 +1522,6 @@
|
||||
}
|
||||
];
|
||||
|
||||
// Links, images and inner links don't use the same marker to wrap their content.
|
||||
const linksFormat = [
|
||||
{
|
||||
prefix: "[",
|
||||
regex: /\[([^\]]*)\]\(([^\)]*)\)/,
|
||||
urlIndex: 2, // Index in the match that contains the link URL
|
||||
textIndex: 1 // Index in the match that contains the link text
|
||||
},
|
||||
{
|
||||
prefix: "h",
|
||||
regex: /http[s]?:\/\/[^\s]+/,
|
||||
urlIndex: 0,
|
||||
textIndex: 0
|
||||
}
|
||||
];
|
||||
|
||||
const stack = [];
|
||||
|
||||
var innerHTML = "";
|
||||
@ -1550,29 +1572,6 @@
|
||||
currentRun += innerText[i];
|
||||
in_code = true;
|
||||
} else {
|
||||
var foundMatches = false;
|
||||
|
||||
for (var j = 0; j < linksFormat.length; j++) {
|
||||
const linkFmt = linksFormat[j];
|
||||
|
||||
if (linkFmt.prefix == innerText[i]) {
|
||||
var remaining = innerText.substring(i);
|
||||
var matches = remaining.match(linkFmt.regex);
|
||||
|
||||
if (matches) {
|
||||
flushRun();
|
||||
innerHTML += ' <a href="' + matches[linkFmt.urlIndex] + '">' + matches[linkFmt.textIndex] + '</a> ';
|
||||
i += matches[0].length; // Skip the fragment we just consumed
|
||||
foundMatches = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (foundMatches) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var any = false;
|
||||
for (var idx = (stack.length > 0 ? -1 : 0); idx < formats.length; idx++) {
|
||||
const fmt = idx >= 0 ? formats[idx] : stack[stack.length - 1];
|
||||
@ -1793,7 +1792,7 @@
|
||||
if (ev.ctrlKey) name = "Ctrl+" + name;
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
function onWindowKeyDown(ev) {
|
||||
switch (getKeyString(ev)) {
|
||||
case "Esc":
|
||||
@ -1825,13 +1824,6 @@
|
||||
domHelpModal.focus();
|
||||
}
|
||||
|
||||
function onClickSearchShowAllResults(ev) {
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
searchTrimResults = false;
|
||||
onHashChange();
|
||||
}
|
||||
|
||||
function clearAsyncSearch() {
|
||||
if (searchTimer != null) {
|
||||
clearTimeout(searchTimer);
|
||||
@ -1841,21 +1833,14 @@
|
||||
|
||||
function startAsyncSearch() {
|
||||
clearAsyncSearch();
|
||||
searchTrimResults = true;
|
||||
searchTimer = setTimeout(startSearch, 10);
|
||||
searchTimer = setTimeout(startSearch, 100);
|
||||
}
|
||||
function startSearch() {
|
||||
clearAsyncSearch();
|
||||
var oldHash = location.hash;
|
||||
var parts = oldHash.split("?");
|
||||
var newPart2 = (domSearch.value === "") ? "" : ("?" + domSearch.value);
|
||||
var newHash = (oldHash === "" ? "#" : parts[0]) + newPart2;
|
||||
// create a history entry only once per search
|
||||
if (parts.length === 1) {
|
||||
location.assign(newHash);
|
||||
} else {
|
||||
location.replace(newHash);
|
||||
}
|
||||
location.hash = (parts.length === 1) ? (oldHash + newPart2) : (parts[0] + newPart2);
|
||||
}
|
||||
function getSearchTerms() {
|
||||
var list = curNavSearch.trim().split(/[ \r\n\t]+/);
|
||||
@ -1920,38 +1905,25 @@
|
||||
}
|
||||
|
||||
if (matchedItems.length !== 0) {
|
||||
resizeDomList(domListSearchResults, matchedItems.length, '<li><a href="#"></a></li>');
|
||||
|
||||
matchedItems.sort(function(a, b) {
|
||||
var cmp = operatorCompare(b.points, a.points);
|
||||
if (cmp != 0) return cmp;
|
||||
return operatorCompare(a.decl.name, b.decl.name);
|
||||
});
|
||||
|
||||
var searchTrimmed = false
|
||||
var searchTrimResultsMaxItems = 200
|
||||
if (searchTrimResults && matchedItems.length > searchTrimResultsMaxItems) {
|
||||
matchedItems = matchedItems.slice(0, searchTrimResultsMaxItems)
|
||||
searchTrimmed = true
|
||||
}
|
||||
|
||||
var domListSearchResultsFragment = createDomListFragment(matchedItems.length, '<li><a href="#"></a></li>');
|
||||
for (var i = 0; i < matchedItems.length; i += 1) {
|
||||
var liDom = domListSearchResultsFragment.children[i];
|
||||
var liDom = domListSearchResults.children[i];
|
||||
var aDom = liDom.children[0];
|
||||
var match = matchedItems[i];
|
||||
var lastPkgName = match.path.pkgNames[match.path.pkgNames.length - 1];
|
||||
aDom.textContent = lastPkgName + "." + match.path.declNames.join('.');
|
||||
aDom.setAttribute('href', navLink(match.path.pkgNames, match.path.declNames));
|
||||
}
|
||||
|
||||
domListSearchResults.innerHTML = "";
|
||||
domListSearchResults.appendChild(domListSearchResultsFragment);
|
||||
domSectSearchResults.classList.remove("hidden");
|
||||
|
||||
if (searchTrimmed) {
|
||||
domSectSearchAllResultsLink.classList.remove("hidden");
|
||||
}
|
||||
|
||||
renderSearchCursor();
|
||||
|
||||
domSectSearchResults.classList.remove("hidden");
|
||||
} else {
|
||||
domSectSearchNoResults.classList.remove("hidden");
|
||||
}
|
||||
@ -2013,12 +1985,4 @@
|
||||
return key;
|
||||
}
|
||||
}
|
||||
|
||||
function token(value, tokenClass, wantHtml){
|
||||
if(wantHtml){
|
||||
return '<span class="' + tokenClass + '">' + value + '</span>';
|
||||
} else {
|
||||
return value + '';
|
||||
}
|
||||
}
|
||||
})();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user