add docs for function parameters

This commit is contained in:
Vexu 2019-12-04 20:03:44 +02:00 committed by Andrew Kelley
parent 38791ac616
commit 137cb32f5e
2 changed files with 61 additions and 0 deletions

View File

@ -485,6 +485,10 @@
</p>
</div>
<div id="tldDocs" class="hidden"></div>
<div id="sectParams" class="hidden">
<h2>Parameters</h2>
<div id="listParams"></div>
</div>
<div id="sectFnErrors" class="hidden">
<h2>Errors</h2>
<div id="fnErrorsAnyError">

View File

@ -20,6 +20,8 @@
var domListValues = document.getElementById("listValues");
var domFnProto = document.getElementById("fnProto");
var domFnProtoCode = document.getElementById("fnProtoCode");
var domSectParams = document.getElementById("sectParams");
var domListParams = document.getElementById("listParams");
var domTldDocs = document.getElementById("tldDocs");
var domSectFnErrors = document.getElementById("sectFnErrors");
var domListFnErrors = document.getElementById("listFnErrors");
@ -101,6 +103,7 @@
function render() {
domStatus.classList.add("hidden");
domFnProto.classList.add("hidden");
domSectParams.classList.add("hidden");
domTldDocs.classList.add("hidden");
domSectPkgs.classList.add("hidden");
domSectTypes.classList.add("hidden");
@ -226,6 +229,8 @@
}
var typeObj = zigAnalysis.types[fnDecl.type];
renderFnParamDocs(fnDecl, typeObj);
var errSetTypeIndex = null;
if (typeObj.ret != null) {
var retType = zigAnalysis.types[typeObj.ret];
@ -279,6 +284,58 @@
domFnProto.classList.remove("hidden");
}
function renderFnParamDocs(fnDecl, typeObj) {
var docCount = 0;
var fnObj = zigAnalysis.fns[fnDecl.value];
var fnNode = zigAnalysis.astNodes[fnObj.src];
var fields = fnNode.fields;
var isVarArgs = fnNode.varArgs;
for (var i = 0; i < fields.length; i += 1) {
var field = fields[i];
var fieldNode = zigAnalysis.astNodes[field];
if (fieldNode.docs != null) {
docCount += 1;
}
}
if (docCount == 0) {
return;
}
resizeDomList(domListParams, docCount, '<div></div>');
var domIndex = 0;
for (var i = 0; i < fields.length; i += 1) {
var field = fields[i];
var fieldNode = zigAnalysis.astNodes[field];
if (fieldNode.docs == null) {
continue;
}
var divDom = domListParams.children[domIndex];
domIndex += 1;
var argTypeIndex = typeObj.args[i];
var html = '<pre>' + escapeHtml(fieldNode.name) + ": ";
if (isVarArgs && i === typeObj.args.length - 1) {
html += '...';
} else if (argTypeIndex != null) {
html += typeIndexName(argTypeIndex, true, true);
} else {
html += '<span class="tok-kw">var</span>';
}
html += ',</pre>';
var docs = fieldNode.docs;
if (docs != null) {
html += markdown(docs);
}
divDom.innerHTML = html;
}
domSectParams.classList.remove("hidden");
}
function renderNav() {
var len = curNav.pkgNames.length + curNav.declNames.length;
resizeDomList(domListNav, len, '<li><a href="#"></a></li>');