autodoc: main.js cleanup and formatting

This commit is contained in:
Krzysztof Wolicki Der Teufel 2023-02-04 14:02:39 +01:00
parent d24ebf1d12
commit 02bc6356d7

View File

@ -106,7 +106,7 @@ const NAV_MODES = {
// empty array means refers to the package itself
declNames: [],
// these will be all types, except the last one may be a type or a decl
declObjs: [],
declObjs: [],
// (a, b, c, d) comptime call; result is the value the docs refer to
callName: null,
};
@ -200,7 +200,7 @@ const NAV_MODES = {
case NAV_MODES.GUIDES:
document.title = "[G] " + curNav.activeGuide + suffix;
return;
}
}
}
function isDecl(x) {
@ -401,7 +401,7 @@ const NAV_MODES = {
domGuideSwitch.classList.add("active");
domApiSwitch.classList.remove("active");
domDocs.classList.add("hidden");
domGuides.classList.remove("hidden");
domGuides.classList.remove("hidden");
domApiMenu.classList.add("hidden");
// sidebar guides list
@ -422,7 +422,7 @@ const NAV_MODES = {
if (list.length > 0) {
domGuidesMenu.classList.remove("hidden");
}
// main content
const activeGuide = zigAnalysis.guides[curNav.activeGuide];
if (activeGuide == undefined) {
@ -454,7 +454,7 @@ const NAV_MODES = {
Happy writing!
`);
} else {
} else {
domGuides.innerHTML = markdown(activeGuide);
}
}
@ -467,7 +467,7 @@ const NAV_MODES = {
domDocs.classList.remove("hidden");
domApiMenu.classList.remove("hidden");
domGuidesMenu.classList.add("hidden");
domStatus.classList.add("hidden");
domFnProto.classList.add("hidden");
domSectParams.classList.add("hidden");
@ -537,9 +537,9 @@ const NAV_MODES = {
currentType = childDecl;
curNav.declObjs.push(currentType);
}
window.x = currentType;
renderNav();
@ -586,15 +586,15 @@ const NAV_MODES = {
switch (curNav.mode) {
case NAV_MODES.API:
case NAV_MODES.API_INTERNAL:
return renderApi();
return renderApi();
case NAV_MODES.GUIDES:
return renderGuides();
return renderGuides();
default:
throw "?";
}
throw "?";
}
}
function renderDocTest(decl) {
if (!decl.decltest) return;
const astNode = getAstNode(decl.decltest);
@ -651,7 +651,7 @@ const NAV_MODES = {
wantLink: true,
fnDecl,
});
domFnSourceLink.innerHTML = "[<a target=\"_blank\" href=\"" + sourceFileLink(fnDecl) + "\">src</a>]";
let docsSource = null;
@ -895,7 +895,7 @@ const NAV_MODES = {
function navLink(pkgNames, declNames, callName) {
let base = curNav.mode;
if (pkgNames.length === 0 && declNames.length === 0) {
return base;
} else if (declNames.length === 0 && callName == null) {
@ -919,18 +919,18 @@ const NAV_MODES = {
function findDeclNavLink(declName) {
if (curNav.declObjs.length == 0) return null;
const curFile = getAstNode(curNav.declObjs[curNav.declObjs.length-1].src).file;
for (let i = curNav.declObjs.length -1; i >= 0; i--) {
const curDecl = curNav.declObjs[i];
const curDeclName = curNav.declNames[i-1];
if (curDeclName == declName) {
const declPath = curNav.declNames.slice(0,i);
return navLink(curNav.pkgNames, declPath);
}
const curFile = getAstNode(curNav.declObjs[curNav.declObjs.length - 1].src).file;
if (findSubDecl(curDecl, declName) != null) {
const declPath = curNav.declNames.slice(0,i).concat([declName]);
for (let i = curNav.declObjs.length - 1; i >= 0; i--) {
const curDecl = curNav.declObjs[i];
const curDeclName = curNav.declNames[i - 1];
if (curDeclName == declName) {
const declPath = curNav.declNames.slice(0, i);
return navLink(curNav.pkgNames, declPath);
}
if (findSubDecl(curDecl, declName) != null) {
const declPath = curNav.declNames.slice(0, i).concat([declName]);
return navLink(curNav.pkgNames, declPath);
}
}
@ -1362,10 +1362,6 @@ const NAV_MODES = {
payloadHtml += "truncate";
break;
}
case "align_cast": {
payloadHtml += "alignCast";
break;
}
case "has_decl": {
payloadHtml += "hasDecl";
break;
@ -1696,15 +1692,15 @@ const NAV_MODES = {
}
case "declRef": {
const name = getDecl(expr.declRef).name;
if (opts.wantHtml) {
let payloadHtml = "";
if (opts.wantLink) {
payloadHtml += '<a href="'+ findDeclNavLink(name) +'">';
payloadHtml += '<a href="' + findDeclNavLink(name) + '">';
}
payloadHtml +=
'<span class="tok-kw" style="color:lightblue;">' +
name +
name +
"</span>";
if (opts.wantLink) payloadHtml += "</a>";
return payloadHtml;
@ -1724,12 +1720,12 @@ const NAV_MODES = {
if ("string" in expr.refPath[i]) {
component = expr.refPath[i].string;
} else {
component = exprName(expr.refPath[i], {...opts, wantLink: false});
component = exprName(expr.refPath[i], { ...opts, wantLink: false });
if (opts.wantLink && "declRef" in expr.refPath[i]) {
url += "." + getDecl(expr.refPath[i].declRef).name;
component = '<a href="'+ url +'">' +
component = '<a href="' + url + '">' +
component +
"</a>";
"</a>";
}
}
name += "." + component;
@ -1788,7 +1784,7 @@ const NAV_MODES = {
name = "struct { ";
}
}
if (structObj.fields.length > 1 && opts.wantHtml) {name += "</br>";}
if (structObj.fields.length > 1 && opts.wantHtml) { name += "</br>"; }
let indent = "";
if (structObj.fields.length > 1 && opts.wantHtml) {
indent = "&nbsp;&nbsp;&nbsp;&nbsp;"
@ -1804,7 +1800,7 @@ const NAV_MODES = {
field_end += " ";
}
for(let i = 0; i < structObj.fields.length; i += 1) {
for (let i = 0; i < structObj.fields.length; i += 1) {
let fieldNode = getAstNode(structNode.fields[i]);
let fieldName = fieldNode.name;
let html = indent;
@ -1813,11 +1809,11 @@ const NAV_MODES = {
}
let fieldTypeExpr = structObj.fields[i];
if(!structObj.is_tuple) {
if (!structObj.is_tuple) {
html += ": ";
}
html += exprName(fieldTypeExpr, {...opts, indent: indent});
html += exprName(fieldTypeExpr, { ...opts, indent: indent });
html += field_end;
@ -1846,7 +1842,7 @@ const NAV_MODES = {
if (enumObj.nonexhaustive) {
fields_len += 1;
}
if (fields_len > 1 && opts.wantHtml) {name += "</br>";}
if (fields_len > 1 && opts.wantHtml) { name += "</br>"; }
let indent = "";
if (fields_len > 1) {
if (opts.wantHtml) {
@ -1864,10 +1860,10 @@ const NAV_MODES = {
} else {
field_end += " ";
}
for(let i = 0; i < enumNode.fields.length; i += 1) {
for (let i = 0; i < enumNode.fields.length; i += 1) {
let fieldNode = getAstNode(enumNode.fields[i]);
let fieldName = fieldNode.name;
let html = indent + escapeHtml(fieldName);
let html = indent + escapeHtml(fieldName);
html += field_end;
@ -1891,16 +1887,16 @@ const NAV_MODES = {
name = "union";
}
if (unionObj.auto_tag) {
if (opts.wantHtml) {
name += " (<span class='tok-kw'>enum</span>";
} else {
name += " (enum";
}
if (unionObj.tag) {
name += "(" + exprName(unionObj.tag, opts) + "))";
} else {
name += ")";
}
if (opts.wantHtml) {
name += " (<span class='tok-kw'>enum</span>";
} else {
name += " (enum";
}
if (unionObj.tag) {
name += "(" + exprName(unionObj.tag, opts) + "))";
} else {
name += ")";
}
} else if (unionObj.tag) {
name += " (" + exprName(unionObj.tag, opts) + ")";
}
@ -1922,7 +1918,7 @@ const NAV_MODES = {
} else {
field_end += " ";
}
for(let i = 0; i < unionObj.fields.length; i += 1) {
for (let i = 0; i < unionObj.fields.length; i += 1) {
let fieldNode = getAstNode(unionNode.fields[i]);
let fieldName = fieldNode.name;
let html = indent + escapeHtml(fieldName);
@ -1930,7 +1926,7 @@ const NAV_MODES = {
let fieldTypeExpr = unionObj.fields[i];
html += ": ";
html += exprName(fieldTypeExpr, {...opts, indent: indent});
html += exprName(fieldTypeExpr, { ...opts, indent: indent });
html += field_end;
@ -2159,7 +2155,7 @@ const NAV_MODES = {
opts.fnDecl = null;
opts.linkFnNameDecl = null;
let payloadHtml = "";
if (opts.addParensIfFnSignature && fnObj.src == 0){
if (opts.addParensIfFnSignature && fnObj.src == 0) {
payloadHtml += "(";
}
if (opts.wantHtml) {
@ -2175,7 +2171,7 @@ const NAV_MODES = {
if (linkFnNameDecl) {
payloadHtml +=
'<a href="' + linkFnNameDecl + '">' +
escapeHtml(fnDecl.name) +
escapeHtml(fnDecl.name) +
"</a>";
} else {
payloadHtml += escapeHtml(fnDecl.name);
@ -2194,7 +2190,7 @@ const NAV_MODES = {
fields = fnNode.fields;
isVarArgs = fnNode.varArgs;
}
for (let i = 0; i < fnObj.params.length; i += 1) {
if (i != 0) {
payloadHtml += ", ";
@ -2247,13 +2243,13 @@ const NAV_MODES = {
} else if ("typeOf" in value) {
payloadHtml += exprName(value, opts);
} else if ("typeOf_peer" in value) {
payloadHtml += exprName(value, opts);
payloadHtml += exprName(value, opts);
} else if ("declRef" in value) {
payloadHtml += exprName(value, opts);
payloadHtml += exprName(value, opts);
} else if ("call" in value) {
payloadHtml += exprName(value, opts);
payloadHtml += exprName(value, opts);
} else if ("refPath" in value) {
payloadHtml += exprName(value, opts);
payloadHtml += exprName(value, opts);
} else if ("type" in value) {
payloadHtml += exprName(value, opts);
//payloadHtml += '<span class="tok-kw">' + name + "</span>";
@ -2297,7 +2293,7 @@ const NAV_MODES = {
}
if (fnObj.ret != null) {
payloadHtml += exprName(fnObj.ret, {
...opts,
...opts,
addParensIfFnSignature: true,
});
} else if (opts.wantHtml) {
@ -2306,7 +2302,7 @@ const NAV_MODES = {
payloadHtml += "anytype";
}
if (opts.addParensIfFnSignature && fnObj.src == 0){
if (opts.addParensIfFnSignature && fnObj.src == 0) {
payloadHtml += ")";
}
return payloadHtml;
@ -2349,7 +2345,7 @@ const NAV_MODES = {
) {
name = "std";
} else {
name = exprName({ type: typeObj }, {wantHtml: false, wantLink: false});
name = exprName({ type: typeObj }, { wantHtml: false, wantLink: false });
}
if (name != null && name != "") {
domHdrName.innerText =
@ -2640,10 +2636,10 @@ const NAV_MODES = {
}
function sourceFileLink(decl) {
const srcNode = getAstNode(decl.src);
return sourceFileUrlTemplate.
replace("{{file}}", zigAnalysis.files[srcNode.file]).
replace("{{line}}", srcNode.line + 1);
const srcNode = getAstNode(decl.src);
return sourceFileUrlTemplate.
replace("{{file}}", zigAnalysis.files[srcNode.file]).
replace("{{line}}", srcNode.line + 1);
}
function renderContainer(container) {
@ -2779,8 +2775,8 @@ const NAV_MODES = {
if (short != docs) {
short = markdown(short);
var long = markdown(docs);
tdDesc.innerHTML =
"<div class=\"expand\" ><span class=\"button\" onclick=\"toggleExpand(event)\"></span><div class=\"sum-less\">" + short + "</div>" + "<div class=\"sum-more\">" + long + "</div></details>";
tdDesc.innerHTML =
"<div class=\"expand\" ><span class=\"button\" onclick=\"toggleExpand(event)\"></span><div class=\"sum-less\">" + short + "</div>" + "<div class=\"sum-more\">" + long + "</div></details>";
}
else {
tdDesc.innerHTML = markdown(short);
@ -2814,10 +2810,10 @@ const NAV_MODES = {
html += ' = <span class="tok-number">' + fieldName + "</span>";
} else {
let fieldTypeExpr = container.fields[i];
if(container.kind ==! typeKinds.Struct || !container.is_tuple) {
if (container.kind !== typeKinds.Struct || !container.is_tuple) {
html += ": ";
}
html += exprName(fieldTypeExpr, {wantHtml:true, wantLink:true});
html += exprName(fieldTypeExpr, { wantHtml: true, wantLink: true });
let tsn = typeShorthandName(fieldTypeExpr);
if (tsn) {
html += "<span> (" + tsn + ")</span>";
@ -3003,8 +2999,8 @@ const NAV_MODES = {
throw new Error("No type 'type' found");
}
function updateCurNav() {
function updateCurNav() {
curNav = {
mode: NAV_MODES.API,
pkgNames: [],
@ -3017,7 +3013,7 @@ const NAV_MODES = {
const mode = location.hash.substring(0, 3);
let query = location.hash.substring(3);
const DEFAULT_HASH = NAV_MODES.API + zigAnalysis.packages[zigAnalysis.rootPkg].name;
switch (mode) {
case NAV_MODES.API:
@ -3033,7 +3029,7 @@ const NAV_MODES = {
nonSearchPart = query.substring(0, qpos);
curNavSearch = decodeURIComponent(query.substring(qpos + 1));
}
let parts = nonSearchPart.split(":");
if (parts[0] == "") {
location.hash = DEFAULT_HASH;
@ -3055,14 +3051,14 @@ const NAV_MODES = {
curNav.mode = mode;
curNav.activeGuide = query;
return;
default:
location.hash = DEFAULT_HASH;
return;
}
}
}
function onHashChange() {
updateCurNav();
if (domSearch.value !== curNavSearch) {
@ -3099,7 +3095,7 @@ const NAV_MODES = {
if (!callee.generic_ret) return null;
resolvedGenericRet = resolveValue({ expr: callee.generic_ret });
}
if ("type" in resolvedGenericRet.expr) {
parentType = getType(resolvedGenericRet.expr.type);
}
@ -3244,7 +3240,7 @@ const NAV_MODES = {
});
}
function shortDesc(docs){
function shortDesc(docs) {
const trimmed_docs = docs.trim();
let index = trimmed_docs.indexOf("\n\n");
let cut = false;