| ... | @@ -2,6 +2,7 @@ | ... | @@ -2,6 +2,7 @@ |
| 2 | var domStatus = document.getElementById("status"); | 2 | var domStatus = document.getElementById("status"); |
| 3 | var domSectNav = document.getElementById("sectNav"); | 3 | var domSectNav = document.getElementById("sectNav"); |
| 4 | var domListNav = document.getElementById("listNav"); | 4 | var domListNav = document.getElementById("listNav"); |
| | 5 | var domSectMainPkg = document.getElementById("sectMainPkg"); |
| 5 | var domSectPkgs = document.getElementById("sectPkgs"); | 6 | var domSectPkgs = document.getElementById("sectPkgs"); |
| 6 | var domListPkgs = document.getElementById("listPkgs"); | 7 | var domListPkgs = document.getElementById("listPkgs"); |
| 7 | var domSectTypes = document.getElementById("sectTypes"); | 8 | var domSectTypes = document.getElementById("sectTypes"); |
| ... | @@ -35,7 +36,6 @@ | ... | @@ -35,7 +36,6 @@ |
| 35 | var domSectSearchResults = document.getElementById("sectSearchResults"); | 36 | var domSectSearchResults = document.getElementById("sectSearchResults"); |
| 36 | var domListSearchResults = document.getElementById("listSearchResults"); | 37 | var domListSearchResults = document.getElementById("listSearchResults"); |
| 37 | var domSectSearchNoResults = document.getElementById("sectSearchNoResults"); | 38 | var domSectSearchNoResults = document.getElementById("sectSearchNoResults"); |
| 38 | var domSectSearchAllResultsLink = document.getElementById("sectSearchAllResultsLink"); | | |
| 39 | var domSectInfo = document.getElementById("sectInfo"); | 39 | var domSectInfo = document.getElementById("sectInfo"); |
| 40 | var domTdTarget = document.getElementById("tdTarget"); | 40 | var domTdTarget = document.getElementById("tdTarget"); |
| 41 | var domTdZigVer = document.getElementById("tdZigVer"); | 41 | var domTdZigVer = document.getElementById("tdZigVer"); |
| ... | @@ -43,22 +43,11 @@ | ... | @@ -43,22 +43,11 @@ |
| 43 | var domHelpModal = document.getElementById("helpDialog"); | 43 | var domHelpModal = document.getElementById("helpDialog"); |
| 44 | | 44 | |
| 45 | var searchTimer = null; | 45 | var searchTimer = null; |
| 46 | var searchTrimResults = true; | | |
| 47 | var escapeHtmlReplacements = { "&": "&amp;", '"': "&quot;", "<": "&lt;", ">": "&gt;" }; | 46 | var escapeHtmlReplacements = { "&": "&amp;", '"': "&quot;", "<": "&lt;", ">": "&gt;" }; |
| 48 | | 47 | |
| 49 | var typeKinds = indexTypeKinds(); | 48 | var typeKinds = indexTypeKinds(); |
| 50 | var typeTypeId = findTypeTypeId(); | 49 | var typeTypeId = findTypeTypeId(); |
| 51 | var pointerSizeEnum = { One: 0, Many: 1, Slice: 2, C: 3 }; | 50 | var pointerSizeEnum = { One: 0, Many: 1, Slice: 2, C: 3 }; |
| 52 | var tokenKinds = { | | |
| 53 | Keyword: 'tok-kw', | | |
| 54 | String: 'tok-str', | | |
| 55 | Builtin: 'tok-builtin', | | |
| 56 | Comment: 'tok-comment', | | |
| 57 | Function: 'tok-fn', | | |
| 58 | Null: 'tok-null', | | |
| 59 | Number: 'tok-number', | | |
| 60 | Type: 'tok-type', | | |
| 61 | }; | | |
| 62 | | 51 | |
| 63 | // for each package, is an array with packages to get to this one | 52 | // for each package, is an array with packages to get to this one |
| 64 | var canonPkgPaths = computeCanonicalPackagePaths(); | 53 | var canonPkgPaths = computeCanonicalPackagePaths(); |
| ... | @@ -94,8 +83,6 @@ | ... | @@ -94,8 +83,6 @@ |
| 94 | var nodesToCallsMap = indexNodesToCalls(); | 83 | var nodesToCallsMap = indexNodesToCalls(); |
| 95 | | 84 | |
| 96 | domSearch.addEventListener('keydown', onSearchKeyDown, false); | 85 | domSearch.addEventListener('keydown', onSearchKeyDown, false); |
| 97 | domSectSearchAllResultsLink.addEventListener('click', onClickSearchShowAllResults, false); | | |
| 98 | | | |
| 99 | window.addEventListener('hashchange', onHashChange, false); | 86 | window.addEventListener('hashchange', onHashChange, false); |
| 100 | window.addEventListener('keydown', onWindowKeyDown, false); | 87 | window.addEventListener('keydown', onWindowKeyDown, false); |
| 101 | onHashChange(); | 88 | onHashChange(); |
| ... | @@ -119,6 +106,7 @@ | ... | @@ -119,6 +106,7 @@ |
| 119 | domFnProto.classList.add("hidden"); | 106 | domFnProto.classList.add("hidden"); |
| 120 | domSectParams.classList.add("hidden"); | 107 | domSectParams.classList.add("hidden"); |
| 121 | domTldDocs.classList.add("hidden"); | 108 | domTldDocs.classList.add("hidden"); |
| | 109 | domSectMainPkg.classList.add("hidden"); |
| 122 | domSectPkgs.classList.add("hidden"); | 110 | domSectPkgs.classList.add("hidden"); |
| 123 | domSectTypes.classList.add("hidden"); | 111 | domSectTypes.classList.add("hidden"); |
| 124 | domSectNamespaces.classList.add("hidden"); | 112 | domSectNamespaces.classList.add("hidden"); |
| ... | @@ -127,7 +115,6 @@ | ... | @@ -127,7 +115,6 @@ |
| 127 | domSectFields.classList.add("hidden"); | 115 | domSectFields.classList.add("hidden"); |
| 128 | domSectSearchResults.classList.add("hidden"); | 116 | domSectSearchResults.classList.add("hidden"); |
| 129 | domSectSearchNoResults.classList.add("hidden"); | 117 | domSectSearchNoResults.classList.add("hidden"); |
| 130 | domSectSearchAllResultsLink.classList.add("hidden"); | | |
| 131 | domSectInfo.classList.add("hidden"); | 118 | domSectInfo.classList.add("hidden"); |
| 132 | domHdrName.classList.add("hidden"); | 119 | domHdrName.classList.add("hidden"); |
| 133 | domSectNav.classList.add("hidden"); | 120 | domSectNav.classList.add("hidden"); |
| ... | @@ -269,19 +256,15 @@ | ... | @@ -269,19 +256,15 @@ |
| 269 | domFnNoExamples.classList.remove("hidden"); | 256 | domFnNoExamples.classList.remove("hidden"); |
| 270 | } else if (calls != null) { | 257 | } else if (calls != null) { |
| 271 | if (fnObj.combined === undefined) fnObj.combined = allCompTimeFnCallsResult(calls); | 258 | if (fnObj.combined === undefined) fnObj.combined = allCompTimeFnCallsResult(calls); |
| 272 | if (fnObj.combined != null) { | 259 | if (fnObj.combined != null) renderContainer(fnObj.combined); |
| 273 | renderContainer(fnObj.combined, calls.map(function (call) { return zigAnalysis.calls[call].result.value })); | | |
| 274 | } | | |
| 275 | | 260 | |
| 276 | var domListFnExamplesFragment = createDomListFragment(calls.length, '<li></li>'); | 261 | resizeDomList(domListFnExamples, calls.length, '<li></li>'); |
| 277 | | 262 | |
| 278 | for (var callI = 0; callI < calls.length; callI += 1) { | 263 | for (var callI = 0; callI < calls.length; callI += 1) { |
| 279 | var liDom = domListFnExamplesFragment.children[callI]; | 264 | var liDom = domListFnExamples.children[callI]; |
| 280 | liDom.innerHTML = getCallHtml(fnDecl, calls[callI]); | 265 | liDom.innerHTML = getCallHtml(fnDecl, calls[callI]); |
| 281 | } | 266 | } |
| 282 | | 267 | |
| 283 | domListFnExamples.innerHTML = ""; | | |
| 284 | domListFnExamples.appendChild(domListFnExamplesFragment); | | |
| 285 | domFnExamples.classList.remove("hidden"); | 268 | domFnExamples.classList.remove("hidden"); |
| 286 | } else if (instantiations != null) { | 269 | } else if (instantiations != null) { |
| 287 | // TODO | 270 | // TODO |
| ... | @@ -322,7 +305,7 @@ | ... | @@ -322,7 +305,7 @@ |
| 322 | return; | 305 | return; |
| 323 | } | 306 | } |
| 324 | | 307 | |
| 325 | var domListParamsFragment = createDomListFragment(docCount, '<div></div>'); | 308 | resizeDomList(domListParams, docCount, '<div></div>'); |
| 326 | var domIndex = 0; | 309 | var domIndex = 0; |
| 327 | | 310 | |
| 328 | for (var i = 0; i < fields.length; i += 1) { | 311 | for (var i = 0; i < fields.length; i += 1) { |
| ... | @@ -331,7 +314,7 @@ | ... | @@ -331,7 +314,7 @@ |
| 331 | if (fieldNode.docs == null) { | 314 | if (fieldNode.docs == null) { |
| 332 | continue; | 315 | continue; |
| 333 | } | 316 | } |
| 334 | var divDom = domListParamsFragment.children[domIndex]; | 317 | var divDom = domListParams.children[domIndex]; |
| 335 | domIndex += 1; | 318 | domIndex += 1; |
| 336 | var argTypeIndex = typeObj.args[i]; | 319 | var argTypeIndex = typeObj.args[i]; |
| 337 | | 320 | |
| ... | @@ -352,15 +335,12 @@ | ... | @@ -352,15 +335,12 @@ |
| 352 | } | 335 | } |
| 353 | divDom.innerHTML = html; | 336 | divDom.innerHTML = html; |
| 354 | } | 337 | } |
| 355 | | | |
| 356 | domListParams.innerHTML = ""; | | |
| 357 | domListParams.appendChild(domListParamsFragment); | | |
| 358 | domSectParams.classList.remove("hidden"); | 338 | domSectParams.classList.remove("hidden"); |
| 359 | } | 339 | } |
| 360 | | 340 | |
| 361 | function renderNav() { | 341 | function renderNav() { |
| 362 | var len = curNav.pkgNames.length + curNav.declNames.length; | 342 | var len = curNav.pkgNames.length + curNav.declNames.length; |
| 363 | var domListNavFragment = createDomListFragment(len, '<li><a href="#"></a></li>'); | 343 | resizeDomList(domListNav, len, '<li><a href="#"></a></li>'); |
| 364 | var list = []; | 344 | var list = []; |
| 365 | var hrefPkgNames = []; | 345 | var hrefPkgNames = []; |
| 366 | var hrefDeclNames = []; | 346 | var hrefDeclNames = []; |
| ... | @@ -380,7 +360,7 @@ | ... | @@ -380,7 +360,7 @@ |
| 380 | } | 360 | } |
| 381 | | 361 | |
| 382 | for (var i = 0; i < list.length; i += 1) { | 362 | for (var i = 0; i < list.length; i += 1) { |
| 383 | var liDom = domListNavFragment.children[i]; | 363 | var liDom = domListNav.children[i]; |
| 384 | var aDom = liDom.children[0]; | 364 | var aDom = liDom.children[0]; |
| 385 | aDom.textContent = list[i].name; | 365 | aDom.textContent = list[i].name; |
| 386 | aDom.setAttribute('href', list[i].link); | 366 | aDom.setAttribute('href', list[i].link); |
| ... | @@ -391,8 +371,6 @@ | ... | @@ -391,8 +371,6 @@ |
| 391 | } | 371 | } |
| 392 | } | 372 | } |
| 393 | | 373 | |
| 394 | domListNav.innerHTML = ""; | | |
| 395 | domListNav.appendChild(domListNavFragment); | | |
| 396 | domSectNav.classList.remove("hidden"); | 374 | domSectNav.classList.remove("hidden"); |
| 397 | } | 375 | } |
| 398 | | 376 | |
| ... | @@ -412,7 +390,6 @@ | ... | @@ -412,7 +390,6 @@ |
| 412 | var rootPkg = zigAnalysis.packages[zigAnalysis.rootPkg]; | 390 | var rootPkg = zigAnalysis.packages[zigAnalysis.rootPkg]; |
| 413 | var list = []; | 391 | var list = []; |
| 414 | for (var key in rootPkg.table) { | 392 | for (var key in rootPkg.table) { |
| 415 | if (key === "root" && rootIsStd) continue; | | |
| 416 | var pkgIndex = rootPkg.table[key]; | 393 | var pkgIndex = rootPkg.table[key]; |
| 417 | if (zigAnalysis.packages[pkgIndex] == null) continue; | 394 | if (zigAnalysis.packages[pkgIndex] == null) continue; |
| 418 | list.push({ | 395 | list.push({ |
| ... | @@ -420,14 +397,27 @@ | ... | @@ -420,14 +397,27 @@ |
| 420 | pkg: pkgIndex, | 397 | pkg: pkgIndex, |
| 421 | }); | 398 | }); |
| 422 | } | 399 | } |
| | 400 | |
| | 401 | { |
| | 402 | var aDom = domSectMainPkg.children[1].children[0].children[0]; |
| | 403 | aDom.textContent = zigAnalysis.params.rootName; |
| | 404 | aDom.setAttribute('href', navLinkPkg(zigAnalysis.rootPkg)); |
| | 405 | if (zigAnalysis.params.rootName === curNav.pkgNames[0]) { |
| | 406 | aDom.classList.add("active"); |
| | 407 | } else { |
| | 408 | aDom.classList.remove("active"); |
| | 409 | } |
| | 410 | domSectMainPkg.classList.remove("hidden"); |
| | 411 | } |
| | 412 | |
| 423 | list.sort(function(a, b) { | 413 | list.sort(function(a, b) { |
| 424 | return operatorCompare(a.name.toLowerCase(), b.name.toLowerCase()); | 414 | return operatorCompare(a.name.toLowerCase(), b.name.toLowerCase()); |
| 425 | }); | 415 | }); |
| 426 | | 416 | |
| 427 | if (list.length !== 0) { | 417 | if (list.length !== 0) { |
| 428 | var domListPkgsFragment = createDomListFragment(list.length, '<li><a href="#"></a></li>'); | 418 | resizeDomList(domListPkgs, list.length, '<li><a href="#"></a></li>'); |
| 429 | for (var i = 0; i < list.length; i += 1) { | 419 | for (var i = 0; i < list.length; i += 1) { |
| 430 | var liDom = domListPkgsFragment.children[i]; | 420 | var liDom = domListPkgs.children[i]; |
| 431 | var aDom = liDom.children[0]; | 421 | var aDom = liDom.children[0]; |
| 432 | aDom.textContent = list[i].name; | 422 | aDom.textContent = list[i].name; |
| 433 | aDom.setAttribute('href', navLinkPkg(list[i].pkg)); | 423 | aDom.setAttribute('href', navLinkPkg(list[i].pkg)); |
| ... | @@ -438,8 +428,6 @@ | ... | @@ -438,8 +428,6 @@ |
| 438 | } | 428 | } |
| 439 | } | 429 | } |
| 440 | | 430 | |
| 441 | domListPkgs.innerHTML = ""; | | |
| 442 | domListPkgs.appendChild(domListPkgsFragment); | | |
| 443 | domSectPkgs.classList.remove("hidden"); | 431 | domSectPkgs.classList.remove("hidden"); |
| 444 | } | 432 | } |
| 445 | } | 433 | } |
| ... | @@ -480,34 +468,50 @@ | ... | @@ -480,34 +468,50 @@ |
| 480 | return navLink(curNav.pkgNames, declNamesCopy); | 468 | return navLink(curNav.pkgNames, declNamesCopy); |
| 481 | } | 469 | } |
| 482 | | 470 | |
| 483 | function createDomListFragment(desiredLen, templateHtml) { | 471 | function resizeDomListDl(dlDom, desiredLen) { |
| 484 | var domTemplate = document.createElement("template"); | 472 | // add the missing dom entries |
| 485 | domTemplate.innerHTML = templateHtml.repeat(desiredLen); | 473 | var i, ev; |
| 486 | return domTemplate.content; | 474 | for (i = dlDom.childElementCount / 2; i < desiredLen; i += 1) { |
| | 475 | dlDom.insertAdjacentHTML('beforeend', '<dt></dt><dd></dd>'); |
| | 476 | } |
| | 477 | // remove extra dom entries |
| | 478 | while (desiredLen < dlDom.childElementCount / 2) { |
| | 479 | dlDom.removeChild(dlDom.lastChild); |
| | 480 | dlDom.removeChild(dlDom.lastChild); |
| | 481 | } |
| 487 | } | 482 | } |
| 488 | | 483 | |
| 489 | function typeIndexName(typeIndex, wantHtml, wantLink, fnDecl, linkFnNameDecl, thisTypes) { | 484 | function resizeDomList(listDom, desiredLen, templateHtml) { |
| 490 | if(thisTypes && thisTypes.includes(typeIndex)){ | 485 | // add the missing dom entries |
| 491 | return token('@This', tokenKinds.Builtin, wantHtml) + '()'; | 486 | var i, ev; |
| | 487 | for (i = listDom.childElementCount; i < desiredLen; i += 1) { |
| | 488 | listDom.insertAdjacentHTML('beforeend', templateHtml); |
| | 489 | } |
| | 490 | // remove extra dom entries |
| | 491 | while (desiredLen < listDom.childElementCount) { |
| | 492 | listDom.removeChild(listDom.lastChild); |
| 492 | } | 493 | } |
| | 494 | } |
| | 495 | |
| | 496 | function typeIndexName(typeIndex, wantHtml, wantLink, fnDecl, linkFnNameDecl) { |
| 493 | var typeObj = zigAnalysis.types[typeIndex]; | 497 | var typeObj = zigAnalysis.types[typeIndex]; |
| 494 | var declNameOk = declCanRepresentTypeKind(typeObj.kind); | 498 | var declNameOk = declCanRepresentTypeKind(typeObj.kind); |
| 495 | if (wantLink) { | 499 | if (wantLink) { |
| 496 | var declIndex = getCanonTypeDecl(typeIndex); | 500 | var declIndex = getCanonTypeDecl(typeIndex); |
| 497 | var declPath = getCanonDeclPath(declIndex); | 501 | var declPath = getCanonDeclPath(declIndex); |
| 498 | if (declPath == null) { | 502 | if (declPath == null) { |
| 499 | return typeName(typeObj, wantHtml, wantLink, fnDecl, linkFnNameDecl, thisTypes); | 503 | return typeName(typeObj, wantHtml, wantLink, fnDecl, linkFnNameDecl); |
| 500 | } | 504 | } |
| 501 | var name = (wantLink && declCanRepresentTypeKind(typeObj.kind)) ? | 505 | var name = (wantLink && declCanRepresentTypeKind(typeObj.kind)) ? |
| 502 | declPath.declNames[declPath.declNames.length - 1] : | 506 | declPath.declNames[declPath.declNames.length - 1] : |
| 503 | typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl, thisTypes); | 507 | typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl); |
| 504 | if (wantLink && wantHtml) { | 508 | if (wantLink && wantHtml) { |
| 505 | return '<a href="' + navLink(declPath.pkgNames, declPath.declNames) + '">' + name + '</a>'; | 509 | return '<a href="' + navLink(declPath.pkgNames, declPath.declNames) + '">' + name + '</a>'; |
| 506 | } else { | 510 | } else { |
| 507 | return name; | 511 | return name; |
| 508 | } | 512 | } |
| 509 | } else { | 513 | } else { |
| 510 | return typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl, thisTypes); | 514 | return typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl); |
| 511 | } | 515 | } |
| 512 | } | 516 | } |
| 513 | | 517 | |
| ... | @@ -545,57 +549,32 @@ | ... | @@ -545,57 +549,32 @@ |
| 545 | return typeIndexName(value, wantHtml, wantLink); | 549 | return typeIndexName(value, wantHtml, wantLink); |
| 546 | case typeKinds.Fn: | 550 | case typeKinds.Fn: |
| 547 | var fnObj = zigAnalysis.fns[value]; | 551 | var fnObj = zigAnalysis.fns[value]; |
| 548 | var declPath = fnObj.decl && getCanonDeclPath(fnObj.decl); | 552 | return typeIndexName(fnObj.type, wantHtml, wantLink); |
| 549 | var fnName = declPath ? declPath.declNames.join('.') : '(unknown)'; | | |
| 550 | | | |
| 551 | if (!wantHtml) { | | |
| 552 | return fnName; | | |
| 553 | } | | |
| 554 | | | |
| 555 | var str = '<span class="tok-fn">'; | | |
| 556 | if (wantLink && declPath != null) { | | |
| 557 | str += '<a href="' + navLink(declPath.pkgNames, declPath.declNames) + '">'; | | |
| 558 | str += escapeHtml(fnName); | | |
| 559 | str += '</a>'; | | |
| 560 | } else { | | |
| 561 | str += escapeHtml(fnName); | | |
| 562 | } | | |
| 563 | str += '</span>'; | | |
| 564 | return str; | | |
| 565 | case typeKinds.Int: | 553 | case typeKinds.Int: |
| 566 | return token(value, tokenKinds.Number, wantHtml); | 554 | if (wantHtml) { |
| 567 | case typeKinds.Optional: | 555 | return '<span class="tok-number">' + value + '</span>'; |
| 568 | if(value === 'null'){ | | |
| 569 | return token(value, tokenKinds.Null, wantHtml); | | |
| 570 | } else { | 556 | } else { |
| 571 | console.trace("TODO non-null optional value printing"); | 557 | return value + ""; |
| 572 | return "TODO"; | | |
| 573 | } | 558 | } |
| 574 | case typeKinds.Bool: | | |
| 575 | return token(value, tokenKinds.Null, wantHtml); | | |
| 576 | default: | 559 | default: |
| 577 | console.trace("TODO implement getValueText for this type:", zigAnalysis.typeKinds[typeObj.kind]); | 560 | console.trace("TODO implement getValueText for this type:", zigAnalysis.typeKinds[typeObj.kind]); |
| 578 | return "TODO"; | | |
| 579 | } | 561 | } |
| 580 | } | 562 | } |
| 581 | | 563 | |
| 582 | function typeName(typeObj, wantHtml, wantSubLink, fnDecl, linkFnNameDecl, thisTypes) { | 564 | function typeName(typeObj, wantHtml, wantSubLink, fnDecl, linkFnNameDecl) { |
| 583 | switch (typeObj.kind) { | 565 | switch (typeObj.kind) { |
| 584 | case typeKinds.Array: | 566 | case typeKinds.Array: |
| 585 | var name = "["; | 567 | var name = "["; |
| 586 | name += token(typeObj.len, tokenKinds.Number, wantHtml); | 568 | if (wantHtml) { |
| | 569 | name += '<span class="tok-number">' + typeObj.len + '</span>'; |
| | 570 | } else { |
| | 571 | name += typeObj.len; |
| | 572 | } |
| 587 | name += "]"; | 573 | name += "]"; |
| 588 | name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null, null, thisTypes); | 574 | name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null); |
| 589 | return name; | | |
| 590 | case typeKinds.Vector: | | |
| 591 | var name = "Vector("; | | |
| 592 | name += token(typeObj.len, tokenKinds.Number, wantHtml); | | |
| 593 | name += ", "; | | |
| 594 | name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null, null, thisTypes); | | |
| 595 | name += ")"; | | |
| 596 | return name; | 575 | return name; |
| 597 | case typeKinds.Optional: | 576 | case typeKinds.Optional: |
| 598 | return "?" + typeIndexName(typeObj.child, wantHtml, wantSubLink, fnDecl, linkFnNameDecl, thisTypes); | 577 | return "?" + typeIndexName(typeObj.child, wantHtml, wantSubLink, fnDecl, linkFnNameDecl); |
| 599 | case typeKinds.Pointer: | 578 | case typeKinds.Pointer: |
| 600 | var name = ""; | 579 | var name = ""; |
| 601 | switch (typeObj.len) { | 580 | switch (typeObj.len) { |
| ... | @@ -614,48 +593,112 @@ | ... | @@ -614,48 +593,112 @@ |
| 614 | break; | 593 | break; |
| 615 | } | 594 | } |
| 616 | if (typeObj['const']) { | 595 | if (typeObj['const']) { |
| 617 | name += token('const', tokenKinds.Keyword, wantHtml) + ' '; | 596 | if (wantHtml) { |
| | 597 | name += '<span class="tok-kw">const</span> '; |
| | 598 | } else { |
| | 599 | name += "const "; |
| | 600 | } |
| 618 | } | 601 | } |
| 619 | if (typeObj['volatile']) { | 602 | if (typeObj['volatile']) { |
| 620 | name += token('volatile', tokenKinds.Keyword, wantHtml) + ' '; | 603 | if (wantHtml) { |
| | 604 | name += '<span class="tok-kw">volatile</span> '; |
| | 605 | } else { |
| | 606 | name += "volatile "; |
| | 607 | } |
| 621 | } | 608 | } |
| 622 | if (typeObj.align != null) { | 609 | if (typeObj.align != null) { |
| 623 | name += token('align', tokenKinds.Keyword, wantHtml) + '('; | 610 | if (wantHtml) { |
| 624 | name += token(typeObj.align, tokenKinds.Number, wantHtml); | 611 | name += '<span class="tok-kw">align</span>('; |
| 625 | | 612 | } else { |
| | 613 | name += "align("; |
| | 614 | } |
| | 615 | if (wantHtml) { |
| | 616 | name += '<span class="tok-number">' + typeObj.align + '</span>'; |
| | 617 | } else { |
| | 618 | name += typeObj.align; |
| | 619 | } |
| 626 | if (typeObj.hostIntBytes != null) { | 620 | if (typeObj.hostIntBytes != null) { |
| 627 | name += ":"; | 621 | name += ":"; |
| 628 | name += token(typeObj.bitOffsetInHost, tokenKinds.Number, wantHtml); | 622 | if (wantHtml) { |
| | 623 | name += '<span class="tok-number">' + typeObj.bitOffsetInHost + '</span>'; |
| | 624 | } else { |
| | 625 | name += typeObj.bitOffsetInHost; |
| | 626 | } |
| 629 | name += ":"; | 627 | name += ":"; |
| 630 | name += token(typeObj.hostIntBytes, tokenKinds.Number, wantHtml); | 628 | if (wantHtml) { |
| | 629 | name += '<span class="tok-number">' + typeObj.hostIntBytes + '</span>'; |
| | 630 | } else { |
| | 631 | name += typeObj.hostIntBytes; |
| | 632 | } |
| 631 | } | 633 | } |
| 632 | name += ") "; | 634 | name += ") "; |
| 633 | } | 635 | } |
| 634 | name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null, null, thisTypes); | 636 | name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null); |
| 635 | return name; | 637 | return name; |
| 636 | case typeKinds.Float: | 638 | case typeKinds.Float: |
| 637 | return token('f' + typeObj.bits, tokenKinds.Type, wantHtml); | 639 | if (wantHtml) { |
| | 640 | return '<span class="tok-type">f' + typeObj.bits + '</span>'; |
| | 641 | } else { |
| | 642 | return "f" + typeObj.bits; |
| | 643 | } |
| 638 | case typeKinds.Int: | 644 | case typeKinds.Int: |
| 639 | var signed = (typeObj.i != null) ? 'i' : 'u'; | 645 | return '<span class="tok-type">' + typeObj.name + '</span>'; |
| 640 | var bits = typeObj[signed]; | 646 | // var signed = (typeObj.i != null) ? 'i' : 'u'; |
| 641 | return token(signed + bits, tokenKinds.Type, wantHtml); | 647 | // var bits = typeObj[signed]; |
| | 648 | // if (wantHtml) { |
| | 649 | // return '<span class="tok-type">' + signed + bits + '</span>'; |
| | 650 | // } else { |
| | 651 | // return signed + bits; |
| | 652 | // } |
| 642 | case typeKinds.ComptimeInt: | 653 | case typeKinds.ComptimeInt: |
| 643 | return token('comptime_int', tokenKinds.Type, wantHtml); | 654 | if (wantHtml) { |
| | 655 | return '<span class="tok-type">comptime_int</span>'; |
| | 656 | } else { |
| | 657 | return "comptime_int"; |
| | 658 | } |
| 644 | case typeKinds.ComptimeFloat: | 659 | case typeKinds.ComptimeFloat: |
| 645 | return token('comptime_float', tokenKinds.Type, wantHtml); | 660 | if (wantHtml) { |
| | 661 | return '<span class="tok-type">comptime_float</span>'; |
| | 662 | } else { |
| | 663 | return "comptime_float"; |
| | 664 | } |
| 646 | case typeKinds.Type: | 665 | case typeKinds.Type: |
| 647 | return token('type', tokenKinds.Type, wantHtml); | 666 | if (wantHtml) { |
| | 667 | return '<span class="tok-type">type</span>'; |
| | 668 | } else { |
| | 669 | return "type"; |
| | 670 | } |
| 648 | case typeKinds.Bool: | 671 | case typeKinds.Bool: |
| 649 | return token('bool', tokenKinds.Type, wantHtml); | 672 | if (wantHtml) { |
| | 673 | return '<span class="tok-type">bool</span>'; |
| | 674 | } else { |
| | 675 | return "bool"; |
| | 676 | } |
| 650 | case typeKinds.Void: | 677 | case typeKinds.Void: |
| 651 | return token('void', tokenKinds.Type, wantHtml); | 678 | if (wantHtml) { |
| | 679 | return '<span class="tok-type">void</span>'; |
| | 680 | } else { |
| | 681 | return "void"; |
| | 682 | } |
| 652 | case typeKinds.EnumLiteral: | 683 | case typeKinds.EnumLiteral: |
| 653 | return token('(enum literal)', tokenKinds.Type, wantHtml); | 684 | if (wantHtml) { |
| | 685 | return '<span class="tok-type">(enum literal)</span>'; |
| | 686 | } else { |
| | 687 | return "(enum literal)"; |
| | 688 | } |
| 654 | case typeKinds.NoReturn: | 689 | case typeKinds.NoReturn: |
| 655 | return token('noreturn', tokenKinds.Type, wantHtml); | 690 | if (wantHtml) { |
| | 691 | return '<span class="tok-type">noreturn</span>'; |
| | 692 | } else { |
| | 693 | return "noreturn"; |
| | 694 | } |
| 656 | case typeKinds.ErrorSet: | 695 | case typeKinds.ErrorSet: |
| 657 | if (typeObj.errors == null) { | 696 | if (typeObj.errors == null) { |
| 658 | return token('anyerror', tokenKinds.Type, wantHtml); | 697 | if (wantHtml) { |
| | 698 | return '<span class="tok-type">anyerror</span>'; |
| | 699 | } else { |
| | 700 | return "anyerror"; |
| | 701 | } |
| 659 | } else { | 702 | } else { |
| 660 | if (wantHtml) { | 703 | if (wantHtml) { |
| 661 | return escapeHtml(typeObj.name); | 704 | return escapeHtml(typeObj.name); |
| ... | @@ -665,12 +708,12 @@ | ... | @@ -665,12 +708,12 @@ |
| 665 | } | 708 | } |
| 666 | case typeKinds.ErrorUnion: | 709 | case typeKinds.ErrorUnion: |
| 667 | var errSetTypeObj = zigAnalysis.types[typeObj.err]; | 710 | var errSetTypeObj = zigAnalysis.types[typeObj.err]; |
| 668 | var payloadHtml = typeIndexName(typeObj.payload, wantHtml, wantSubLink, null, null, thisTypes); | 711 | var payloadHtml = typeIndexName(typeObj.payload, wantHtml, wantSubLink, null); |
| 669 | if (fnDecl != null && errSetTypeObj.fn === fnDecl.value) { | 712 | if (fnDecl != null && errSetTypeObj.fn === fnDecl.value) { |
| 670 | // function index parameter supplied and this is the inferred error set of it | 713 | // function index parameter supplied and this is the inferred error set of it |
| 671 | return "!" + payloadHtml; | 714 | return "!" + payloadHtml; |
| 672 | } else { | 715 | } else { |
| 673 | return typeIndexName(typeObj.err, wantHtml, wantSubLink, null, null, thisTypes) + "!" + payloadHtml; | 716 | return typeIndexName(typeObj.err, wantHtml, wantSubLink, null) + "!" + payloadHtml; |
| 674 | } | 717 | } |
| 675 | case typeKinds.Fn: | 718 | case typeKinds.Fn: |
| 676 | var payloadHtml = ""; | 719 | var payloadHtml = ""; |
| ... | @@ -716,11 +759,19 @@ | ... | @@ -716,11 +759,19 @@ |
| 716 | } | 759 | } |
| 717 | | 760 | |
| 718 | if (paramNode.noalias) { | 761 | if (paramNode.noalias) { |
| 719 | payloadHtml += token('noalias', tokenKinds.Keyword, wantHtml) + ' '; | 762 | if (wantHtml) { |
| | 763 | payloadHtml += '<span class="tok-kw">noalias</span> '; |
| | 764 | } else { |
| | 765 | payloadHtml += 'noalias '; |
| | 766 | } |
| 720 | } | 767 | } |
| 721 | | 768 | |
| 722 | if (paramNode.comptime) { | 769 | if (paramNode.comptime) { |
| 723 | payloadHtml += token('comptime', tokenKinds.Keyword, wantHtml) + ' '; | 770 | if (wantHtml) { |
| | 771 | payloadHtml += '<span class="tok-kw">comptime</span> '; |
| | 772 | } else { |
| | 773 | payloadHtml += 'comptime '; |
| | 774 | } |
| 724 | } | 775 | } |
| 725 | | 776 | |
| 726 | var paramName = paramNode.name; | 777 | var paramName = paramNode.name; |
| ... | @@ -735,30 +786,24 @@ | ... | @@ -735,30 +786,24 @@ |
| 735 | if (isVarArgs && i === typeObj.args.length - 1) { | 786 | if (isVarArgs && i === typeObj.args.length - 1) { |
| 736 | payloadHtml += '...'; | 787 | payloadHtml += '...'; |
| 737 | } else if (argTypeIndex != null) { | 788 | } else if (argTypeIndex != null) { |
| 738 | payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink, null, null, thisTypes); | 789 | payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink); |
| | 790 | } else if (wantHtml) { |
| | 791 | payloadHtml += '<span class="tok-kw">var</span>'; |
| 739 | } else { | 792 | } else { |
| 740 | payloadHtml += token('anytype', tokenKinds.Keyword, wantHtml); | 793 | payloadHtml += 'var'; |
| 741 | } | 794 | } |
| 742 | } | 795 | } |
| 743 | } | 796 | } |
| 744 | | 797 | |
| 745 | payloadHtml += ') '; | 798 | payloadHtml += ') '; |
| 746 | if (typeObj.ret != null) { | 799 | if (typeObj.ret != null) { |
| 747 | payloadHtml += typeIndexName(typeObj.ret, wantHtml, wantSubLink, fnDecl, null, thisTypes); | 800 | payloadHtml += typeIndexName(typeObj.ret, wantHtml, wantSubLink, fnDecl); |
| | 801 | } else if (wantHtml) { |
| | 802 | payloadHtml += '<span class="tok-kw">var</span>'; |
| 748 | } else { | 803 | } else { |
| 749 | payloadHtml += token('anytype', tokenKinds.Keyword, wantHtml); | 804 | payloadHtml += 'var'; |
| 750 | } | 805 | } |
| 751 | return payloadHtml; | 806 | return payloadHtml; |
| 752 | case typeKinds.Frame: | | |
| 753 | var fnObj = zigAnalysis.fns[typeObj.fn]; | | |
| 754 | return '@Frame(' + getValueText(fnObj.type, typeObj.fn, wantHtml, wantSubLink) + ')'; | | |
| 755 | case typeKinds.AnyFrame: | | |
| 756 | var name = token('anyframe', tokenKinds.Keyword, wantHtml); | | |
| 757 | if (typeObj.result) { | | |
| 758 | name += "->"; | | |
| 759 | name += typeIndexName(typeObj.result, wantHtml, wantSubLink, null, null, thisTypes); | | |
| 760 | } | | |
| 761 | return name; | | |
| 762 | default: | 807 | default: |
| 763 | if (wantHtml) { | 808 | if (wantHtml) { |
| 764 | return escapeHtml(typeObj.name); | 809 | return escapeHtml(typeObj.name); |
| ... | @@ -801,10 +846,10 @@ | ... | @@ -801,10 +846,10 @@ |
| 801 | return operatorCompare(a.err.name.toLowerCase(), b.err.name.toLowerCase()); | 846 | return operatorCompare(a.err.name.toLowerCase(), b.err.name.toLowerCase()); |
| 802 | }); | 847 | }); |
| 803 | | 848 | |
| 804 | var domListFnErrorsFragment = createDomListFragment(errorList.length, "<dt></dt><dd></dd>"); | 849 | resizeDomListDl(domListFnErrors, errorList.length); |
| 805 | for (var i = 0; i < errorList.length; i += 1) { | 850 | for (var i = 0; i < errorList.length; i += 1) { |
| 806 | var nameTdDom = domListFnErrorsFragment.children[i * 2 + 0]; | 851 | var nameTdDom = domListFnErrors.children[i * 2 + 0]; |
| 807 | var descTdDom = domListFnErrorsFragment.children[i * 2 + 1]; | 852 | var descTdDom = domListFnErrors.children[i * 2 + 1]; |
| 808 | nameTdDom.textContent = errorList[i].err.name; | 853 | nameTdDom.textContent = errorList[i].err.name; |
| 809 | var docs = errorList[i].docs; | 854 | var docs = errorList[i].docs; |
| 810 | if (docs != null) { | 855 | if (docs != null) { |
| ... | @@ -813,8 +858,6 @@ | ... | @@ -813,8 +858,6 @@ |
| 813 | descTdDom.textContent = ""; | 858 | descTdDom.textContent = ""; |
| 814 | } | 859 | } |
| 815 | } | 860 | } |
| 816 | domListFnErrors.innerHTML = ""; | | |
| 817 | domListFnErrors.appendChild(domListFnErrorsFragment); | | |
| 818 | domTableFnErrors.classList.remove("hidden"); | 861 | domTableFnErrors.classList.remove("hidden"); |
| 819 | } | 862 | } |
| 820 | domSectFnErrors.classList.remove("hidden"); | 863 | domSectFnErrors.classList.remove("hidden"); |
| ... | @@ -941,7 +984,7 @@ | ... | @@ -941,7 +984,7 @@ |
| 941 | domFnProto.classList.remove("hidden"); | 984 | domFnProto.classList.remove("hidden"); |
| 942 | } | 985 | } |
| 943 | | 986 | |
| 944 | function renderContainer(container, thisTypes) { | 987 | function renderContainer(container) { |
| 945 | var typesList = []; | 988 | var typesList = []; |
| 946 | var namespacesList = []; | 989 | var namespacesList = []; |
| 947 | var errSetsList = []; | 990 | var errSetsList = []; |
| ... | @@ -994,56 +1037,50 @@ | ... | @@ -994,56 +1037,50 @@ |
| 994 | } | 1037 | } |
| 995 | | 1038 | |
| 996 | if (typesList.length !== 0) { | 1039 | if (typesList.length !== 0) { |
| 997 | var domListTypesFragment = createDomListFragment(typesList.length, '<li><a href="#"></a></li>'); | 1040 | resizeDomList(domListTypes, typesList.length, '<li><a href="#"></a></li>'); |
| 998 | for (var i = 0; i < typesList.length; i += 1) { | 1041 | for (var i = 0; i < typesList.length; i += 1) { |
| 999 | var liDom = domListTypesFragment.children[i]; | 1042 | var liDom = domListTypes.children[i]; |
| 1000 | var aDom = liDom.children[0]; | 1043 | var aDom = liDom.children[0]; |
| 1001 | var decl = typesList[i]; | 1044 | var decl = typesList[i]; |
| 1002 | aDom.textContent = decl.name; | 1045 | aDom.textContent = decl.name; |
| 1003 | aDom.setAttribute('href', navLinkDecl(decl.name)); | 1046 | aDom.setAttribute('href', navLinkDecl(decl.name)); |
| 1004 | } | 1047 | } |
| 1005 | domListTypes.innerHTML = ""; | | |
| 1006 | domListTypes.appendChild(domListTypesFragment); | | |
| 1007 | domSectTypes.classList.remove("hidden"); | 1048 | domSectTypes.classList.remove("hidden"); |
| 1008 | } | 1049 | } |
| 1009 | if (namespacesList.length !== 0) { | 1050 | if (namespacesList.length !== 0) { |
| 1010 | var domListNamespacesFragment = createDomListFragment(namespacesList.length, '<li><a href="#"></a></li>'); | 1051 | resizeDomList(domListNamespaces, namespacesList.length, '<li><a href="#"></a></li>'); |
| 1011 | for (var i = 0; i < namespacesList.length; i += 1) { | 1052 | for (var i = 0; i < namespacesList.length; i += 1) { |
| 1012 | var liDom = domListNamespacesFragment.children[i]; | 1053 | var liDom = domListNamespaces.children[i]; |
| 1013 | var aDom = liDom.children[0]; | 1054 | var aDom = liDom.children[0]; |
| 1014 | var decl = namespacesList[i]; | 1055 | var decl = namespacesList[i]; |
| 1015 | aDom.textContent = decl.name; | 1056 | aDom.textContent = decl.name; |
| 1016 | aDom.setAttribute('href', navLinkDecl(decl.name)); | 1057 | aDom.setAttribute('href', navLinkDecl(decl.name)); |
| 1017 | } | 1058 | } |
| 1018 | domListNamespaces.innerHTML = ""; | | |
| 1019 | domListNamespaces.appendChild(domListNamespacesFragment); | | |
| 1020 | domSectNamespaces.classList.remove("hidden"); | 1059 | domSectNamespaces.classList.remove("hidden"); |
| 1021 | } | 1060 | } |
| 1022 | | 1061 | |
| 1023 | if (errSetsList.length !== 0) { | 1062 | if (errSetsList.length !== 0) { |
| 1024 | var domListErrSetsFragment = createDomListFragment(errSetsList.length, '<li><a href="#"></a></li>'); | 1063 | resizeDomList(domListErrSets, errSetsList.length, '<li><a href="#"></a></li>'); |
| 1025 | for (var i = 0; i < errSetsList.length; i += 1) { | 1064 | for (var i = 0; i < errSetsList.length; i += 1) { |
| 1026 | var liDom = domListErrSetsFragment.children[i]; | 1065 | var liDom = domListErrSets.children[i]; |
| 1027 | var aDom = liDom.children[0]; | 1066 | var aDom = liDom.children[0]; |
| 1028 | var decl = errSetsList[i]; | 1067 | var decl = errSetsList[i]; |
| 1029 | aDom.textContent = decl.name; | 1068 | aDom.textContent = decl.name; |
| 1030 | aDom.setAttribute('href', navLinkDecl(decl.name)); | 1069 | aDom.setAttribute('href', navLinkDecl(decl.name)); |
| 1031 | } | 1070 | } |
| 1032 | domListErrSets.innerHTML = ""; | | |
| 1033 | domListErrSets.appendChild(domListErrSetsFragment); | | |
| 1034 | domSectErrSets.classList.remove("hidden"); | 1071 | domSectErrSets.classList.remove("hidden"); |
| 1035 | } | 1072 | } |
| 1036 | | 1073 | |
| 1037 | if (fnsList.length !== 0) { | 1074 | if (fnsList.length !== 0) { |
| 1038 | var domListFnsFragment = createDomListFragment(fnsList.length, '<tr><td></td><td></td></tr>'); | 1075 | resizeDomList(domListFns, fnsList.length, '<tr><td></td><td></td></tr>'); |
| 1039 | for (var i = 0; i < fnsList.length; i += 1) { | 1076 | for (var i = 0; i < fnsList.length; i += 1) { |
| 1040 | var decl = fnsList[i]; | 1077 | var decl = fnsList[i]; |
| 1041 | var trDom = domListFnsFragment.children[i]; | 1078 | var trDom = domListFns.children[i]; |
| 1042 | | 1079 | |
| 1043 | var tdFnCode = trDom.children[0]; | 1080 | var tdFnCode = trDom.children[0]; |
| 1044 | var tdDesc = trDom.children[1]; | 1081 | var tdDesc = trDom.children[1]; |
| 1045 | | 1082 | |
| 1046 | tdFnCode.innerHTML = typeIndexName(decl.type, true, true, decl, navLinkDecl(decl.name), thisTypes); | 1083 | tdFnCode.innerHTML = typeIndexName(decl.type, true, true, decl, navLinkDecl(decl.name)); |
| 1047 | | 1084 | |
| 1048 | var docs = zigAnalysis.astNodes[decl.src].docs; | 1085 | var docs = zigAnalysis.astNodes[decl.src].docs; |
| 1049 | if (docs != null) { | 1086 | if (docs != null) { |
| ... | @@ -1052,19 +1089,17 @@ | ... | @@ -1052,19 +1089,17 @@ |
| 1052 | tdDesc.textContent = ""; | 1089 | tdDesc.textContent = ""; |
| 1053 | } | 1090 | } |
| 1054 | } | 1091 | } |
| 1055 | domListFns.innerHTML = ""; | | |
| 1056 | domListFns.appendChild(domListFnsFragment); | | |
| 1057 | domSectFns.classList.remove("hidden"); | 1092 | domSectFns.classList.remove("hidden"); |
| 1058 | } | 1093 | } |
| 1059 | | 1094 | |
| 1060 | if (container.fields != null && container.fields.length !== 0) { | 1095 | if (container.fields != null && container.fields.length !== 0) { |
| 1061 | var domListFieldsFragment = createDomListFragment(container.fields.length, '<div></div>'); | 1096 | resizeDomList(domListFields, container.fields.length, '<div></div>'); |
| 1062 | | 1097 | |
| 1063 | var containerNode = zigAnalysis.astNodes[container.src]; | 1098 | var containerNode = zigAnalysis.astNodes[container.src]; |
| 1064 | for (var i = 0; i < container.fields.length; i += 1) { | 1099 | for (var i = 0; i < container.fields.length; i += 1) { |
| 1065 | var field = container.fields[i]; | 1100 | var field = container.fields[i]; |
| 1066 | var fieldNode = zigAnalysis.astNodes[containerNode.fields[i]]; | 1101 | var fieldNode = zigAnalysis.astNodes[containerNode.fields[i]]; |
| 1067 | var divDom = domListFieldsFragment.children[i]; | 1102 | var divDom = domListFields.children[i]; |
| 1068 | | 1103 | |
| 1069 | var html = '<div class="mobile-scroll-container"><pre class="scroll-item">' + escapeHtml(fieldNode.name); | 1104 | var html = '<div class="mobile-scroll-container"><pre class="scroll-item">' + escapeHtml(fieldNode.name); |
| 1070 | | 1105 | |
| ... | @@ -1073,7 +1108,16 @@ | ... | @@ -1073,7 +1108,16 @@ |
| 1073 | } else { | 1108 | } else { |
| 1074 | html += ": "; | 1109 | html += ": "; |
| 1075 | if (typeof(field) === 'object') { | 1110 | if (typeof(field) === 'object') { |
| 1076 | html += '<span class="tok-kw">var</span>'; | 1111 | if (field.failure === true) { |
| | 1112 | html += '<span class="tok-kw" style="color:red;">#FAILURE#</span>'; |
| | 1113 | } else if ("decl_ref" in field) { |
| | 1114 | var name = zigAnalysis.decls[field.decl_ref].name; |
| | 1115 | html += '<a href="'+navLinkDecl(name)+'">'; |
| | 1116 | html += '<span class="tok-kw" style="color:lightblue;">'+ name +'</span>'; |
| | 1117 | html += '</a>'; |
| | 1118 | } else { |
| | 1119 | html += '<span class="tok-kw">var</span>'; |
| | 1120 | } |
| 1077 | } else { | 1121 | } else { |
| 1078 | html += typeIndexName(field, true, true); | 1122 | html += typeIndexName(field, true, true); |
| 1079 | } | 1123 | } |
| ... | @@ -1087,17 +1131,15 @@ | ... | @@ -1087,17 +1131,15 @@ |
| 1087 | } | 1131 | } |
| 1088 | divDom.innerHTML = html; | 1132 | divDom.innerHTML = html; |
| 1089 | } | 1133 | } |
| 1090 | domListFields.innerHTML = ""; | | |
| 1091 | domListFields.appendChild(domListFieldsFragment); | | |
| 1092 | domSectFields.classList.remove("hidden"); | 1134 | domSectFields.classList.remove("hidden"); |
| 1093 | } | 1135 | } |
| 1094 | | 1136 | |
| 1095 | if (varsList.length !== 0) { | 1137 | if (varsList.length !== 0) { |
| 1096 | var domListGlobalVarsFragment = createDomListFragment(varsList.length, | 1138 | resizeDomList(domListGlobalVars, varsList.length, |
| 1097 | '<tr><td><a href="#"></a></td><td></td><td></td></tr>'); | 1139 | '<tr><td><a href="#"></a></td><td></td><td></td></tr>'); |
| 1098 | for (var i = 0; i < varsList.length; i += 1) { | 1140 | for (var i = 0; i < varsList.length; i += 1) { |
| 1099 | var decl = varsList[i]; | 1141 | var decl = varsList[i]; |
| 1100 | var trDom = domListGlobalVarsFragment.children[i]; | 1142 | var trDom = domListGlobalVars.children[i]; |
| 1101 | | 1143 | |
| 1102 | var tdName = trDom.children[0]; | 1144 | var tdName = trDom.children[0]; |
| 1103 | var tdNameA = tdName.children[0]; | 1145 | var tdNameA = tdName.children[0]; |
| ... | @@ -1116,17 +1158,15 @@ | ... | @@ -1116,17 +1158,15 @@ |
| 1116 | tdDesc.textContent = ""; | 1158 | tdDesc.textContent = ""; |
| 1117 | } | 1159 | } |
| 1118 | } | 1160 | } |
| 1119 | domListGlobalVars.innerHTML = ""; | | |
| 1120 | domListGlobalVars.appendChild(domListGlobalVarsFragment); | | |
| 1121 | domSectGlobalVars.classList.remove("hidden"); | 1161 | domSectGlobalVars.classList.remove("hidden"); |
| 1122 | } | 1162 | } |
| 1123 | | 1163 | |
| 1124 | if (valsList.length !== 0) { | 1164 | if (valsList.length !== 0) { |
| 1125 | var domListValuesFragment = createDomListFragment(valsList.length, | 1165 | resizeDomList(domListValues, valsList.length, |
| 1126 | '<tr><td><a href="#"></a></td><td></td><td></td></tr>'); | 1166 | '<tr><td><a href="#"></a></td><td></td><td></td></tr>'); |
| 1127 | for (var i = 0; i < valsList.length; i += 1) { | 1167 | for (var i = 0; i < valsList.length; i += 1) { |
| 1128 | var decl = valsList[i]; | 1168 | var decl = valsList[i]; |
| 1129 | var trDom = domListValuesFragment.children[i]; | 1169 | var trDom = domListValues.children[i]; |
| 1130 | | 1170 | |
| 1131 | var tdName = trDom.children[0]; | 1171 | var tdName = trDom.children[0]; |
| 1132 | var tdNameA = tdName.children[0]; | 1172 | var tdNameA = tdName.children[0]; |
| ... | @@ -1145,8 +1185,6 @@ | ... | @@ -1145,8 +1185,6 @@ |
| 1145 | tdDesc.textContent = ""; | 1185 | tdDesc.textContent = ""; |
| 1146 | } | 1186 | } |
| 1147 | } | 1187 | } |
| 1148 | domListValues.innerHTML = ""; | | |
| 1149 | domListValues.appendChild(domListValuesFragment); | | |
| 1150 | domSectValues.classList.remove("hidden"); | 1188 | domSectValues.classList.remove("hidden"); |
| 1151 | } | 1189 | } |
| 1152 | } | 1190 | } |
| ... | @@ -1484,22 +1522,6 @@ | ... | @@ -1484,22 +1522,6 @@ |
| 1484 | } | 1522 | } |
| 1485 | ]; | 1523 | ]; |
| 1486 | | 1524 | |
| 1487 | // Links, images and inner links don't use the same marker to wrap their content. | | |
| 1488 | const linksFormat = [ | | |
| 1489 | { | | |
| 1490 | prefix: "[", | | |
| 1491 | regex: /\[([^\]]*)\]\(([^\)]*)\)/, | | |
| 1492 | urlIndex: 2, // Index in the match that contains the link URL | | |
| 1493 | textIndex: 1 // Index in the match that contains the link text | | |
| 1494 | }, | | |
| 1495 | { | | |
| 1496 | prefix: "h", | | |
| 1497 | regex: /http[s]?:\/\/[^\s]+/, | | |
| 1498 | urlIndex: 0, | | |
| 1499 | textIndex: 0 | | |
| 1500 | } | | |
| 1501 | ]; | | |
| 1502 | | | |
| 1503 | const stack = []; | 1525 | const stack = []; |
| 1504 | | 1526 | |
| 1505 | var innerHTML = ""; | 1527 | var innerHTML = ""; |
| ... | @@ -1550,29 +1572,6 @@ | ... | @@ -1550,29 +1572,6 @@ |
| 1550 | currentRun += innerText[i]; | 1572 | currentRun += innerText[i]; |
| 1551 | in_code = true; | 1573 | in_code = true; |
| 1552 | } else { | 1574 | } else { |
| 1553 | var foundMatches = false; | | |
| 1554 | | | |
| 1555 | for (var j = 0; j < linksFormat.length; j++) { | | |
| 1556 | const linkFmt = linksFormat[j]; | | |
| 1557 | | | |
| 1558 | if (linkFmt.prefix == innerText[i]) { | | |
| 1559 | var remaining = innerText.substring(i); | | |
| 1560 | var matches = remaining.match(linkFmt.regex); | | |
| 1561 | | | |
| 1562 | if (matches) { | | |
| 1563 | flushRun(); | | |
| 1564 | innerHTML += ' <a href="' + matches[linkFmt.urlIndex] + '">' + matches[linkFmt.textIndex] + '</a> '; | | |
| 1565 | i += matches[0].length; // Skip the fragment we just consumed | | |
| 1566 | foundMatches = true; | | |
| 1567 | break; | | |
| 1568 | } | | |
| 1569 | } | | |
| 1570 | } | | |
| 1571 | | | |
| 1572 | if (foundMatches) { | | |
| 1573 | continue; | | |
| 1574 | } | | |
| 1575 | | | |
| 1576 | var any = false; | 1575 | var any = false; |
| 1577 | for (var idx = (stack.length > 0 ? -1 : 0); idx < formats.length; idx++) { | 1576 | for (var idx = (stack.length > 0 ? -1 : 0); idx < formats.length; idx++) { |
| 1578 | const fmt = idx >= 0 ? formats[idx] : stack[stack.length - 1]; | 1577 | const fmt = idx >= 0 ? formats[idx] : stack[stack.length - 1]; |
| ... | @@ -1793,7 +1792,7 @@ | ... | @@ -1793,7 +1792,7 @@ |
| 1793 | if (ev.ctrlKey) name = "Ctrl+" + name; | 1792 | if (ev.ctrlKey) name = "Ctrl+" + name; |
| 1794 | return name; | 1793 | return name; |
| 1795 | } | 1794 | } |
| 1796 | | 1795 | |
| 1797 | function onWindowKeyDown(ev) { | 1796 | function onWindowKeyDown(ev) { |
| 1798 | switch (getKeyString(ev)) { | 1797 | switch (getKeyString(ev)) { |
| 1799 | case "Esc": | 1798 | case "Esc": |
| ... | @@ -1825,13 +1824,6 @@ | ... | @@ -1825,13 +1824,6 @@ |
| 1825 | domHelpModal.focus(); | 1824 | domHelpModal.focus(); |
| 1826 | } | 1825 | } |
| 1827 | | 1826 | |
| 1828 | function onClickSearchShowAllResults(ev) { | | |
| 1829 | ev.preventDefault(); | | |
| 1830 | ev.stopPropagation(); | | |
| 1831 | searchTrimResults = false; | | |
| 1832 | onHashChange(); | | |
| 1833 | } | | |
| 1834 | | | |
| 1835 | function clearAsyncSearch() { | 1827 | function clearAsyncSearch() { |
| 1836 | if (searchTimer != null) { | 1828 | if (searchTimer != null) { |
| 1837 | clearTimeout(searchTimer); | 1829 | clearTimeout(searchTimer); |
| ... | @@ -1841,21 +1833,14 @@ | ... | @@ -1841,21 +1833,14 @@ |
| 1841 | | 1833 | |
| 1842 | function startAsyncSearch() { | 1834 | function startAsyncSearch() { |
| 1843 | clearAsyncSearch(); | 1835 | clearAsyncSearch(); |
| 1844 | searchTrimResults = true; | 1836 | searchTimer = setTimeout(startSearch, 100); |
| 1845 | searchTimer = setTimeout(startSearch, 10); | | |
| 1846 | } | 1837 | } |
| 1847 | function startSearch() { | 1838 | function startSearch() { |
| 1848 | clearAsyncSearch(); | 1839 | clearAsyncSearch(); |
| 1849 | var oldHash = location.hash; | 1840 | var oldHash = location.hash; |
| 1850 | var parts = oldHash.split("?"); | 1841 | var parts = oldHash.split("?"); |
| 1851 | var newPart2 = (domSearch.value === "") ? "" : ("?" + domSearch.value); | 1842 | var newPart2 = (domSearch.value === "") ? "" : ("?" + domSearch.value); |
| 1852 | var newHash = (oldHash === "" ? "#" : parts[0]) + newPart2; | 1843 | location.hash = (parts.length === 1) ? (oldHash + newPart2) : (parts[0] + newPart2); |
| 1853 | // create a history entry only once per search | | |
| 1854 | if (parts.length === 1) { | | |
| 1855 | location.assign(newHash); | | |
| 1856 | } else { | | |
| 1857 | location.replace(newHash); | | |
| 1858 | } | | |
| 1859 | } | 1844 | } |
| 1860 | function getSearchTerms() { | 1845 | function getSearchTerms() { |
| 1861 | var list = curNavSearch.trim().split(/[ \r\n\t]+/); | 1846 | var list = curNavSearch.trim().split(/[ \r\n\t]+/); |
| ... | @@ -1920,38 +1905,25 @@ | ... | @@ -1920,38 +1905,25 @@ |
| 1920 | } | 1905 | } |
| 1921 | | 1906 | |
| 1922 | if (matchedItems.length !== 0) { | 1907 | if (matchedItems.length !== 0) { |
| | 1908 | resizeDomList(domListSearchResults, matchedItems.length, '<li><a href="#"></a></li>'); |
| | 1909 | |
| 1923 | matchedItems.sort(function(a, b) { | 1910 | matchedItems.sort(function(a, b) { |
| 1924 | var cmp = operatorCompare(b.points, a.points); | 1911 | var cmp = operatorCompare(b.points, a.points); |
| 1925 | if (cmp != 0) return cmp; | 1912 | if (cmp != 0) return cmp; |
| 1926 | return operatorCompare(a.decl.name, b.decl.name); | 1913 | return operatorCompare(a.decl.name, b.decl.name); |
| 1927 | }); | 1914 | }); |
| 1928 | | 1915 | |
| 1929 | var searchTrimmed = false | | |
| 1930 | var searchTrimResultsMaxItems = 200 | | |
| 1931 | if (searchTrimResults && matchedItems.length > searchTrimResultsMaxItems) { | | |
| 1932 | matchedItems = matchedItems.slice(0, searchTrimResultsMaxItems) | | |
| 1933 | searchTrimmed = true | | |
| 1934 | } | | |
| 1935 | | | |
| 1936 | var domListSearchResultsFragment = createDomListFragment(matchedItems.length, '<li><a href="#"></a></li>'); | | |
| 1937 | for (var i = 0; i < matchedItems.length; i += 1) { | 1916 | for (var i = 0; i < matchedItems.length; i += 1) { |
| 1938 | var liDom = domListSearchResultsFragment.children[i]; | 1917 | var liDom = domListSearchResults.children[i]; |
| 1939 | var aDom = liDom.children[0]; | 1918 | var aDom = liDom.children[0]; |
| 1940 | var match = matchedItems[i]; | 1919 | var match = matchedItems[i]; |
| 1941 | var lastPkgName = match.path.pkgNames[match.path.pkgNames.length - 1]; | 1920 | var lastPkgName = match.path.pkgNames[match.path.pkgNames.length - 1]; |
| 1942 | aDom.textContent = lastPkgName + "." + match.path.declNames.join('.'); | 1921 | aDom.textContent = lastPkgName + "." + match.path.declNames.join('.'); |
| 1943 | aDom.setAttribute('href', navLink(match.path.pkgNames, match.path.declNames)); | 1922 | aDom.setAttribute('href', navLink(match.path.pkgNames, match.path.declNames)); |
| 1944 | } | 1923 | } |
| | 1924 | renderSearchCursor(); |
| 1945 | | 1925 | |
| 1946 | domListSearchResults.innerHTML = ""; | | |
| 1947 | domListSearchResults.appendChild(domListSearchResultsFragment); | | |
| 1948 | domSectSearchResults.classList.remove("hidden"); | 1926 | domSectSearchResults.classList.remove("hidden"); |
| 1949 | | | |
| 1950 | if (searchTrimmed) { | | |
| 1951 | domSectSearchAllResultsLink.classList.remove("hidden"); | | |
| 1952 | } | | |
| 1953 | | | |
| 1954 | renderSearchCursor(); | | |
| 1955 | } else { | 1927 | } else { |
| 1956 | domSectSearchNoResults.classList.remove("hidden"); | 1928 | domSectSearchNoResults.classList.remove("hidden"); |
| 1957 | } | 1929 | } |
| ... | @@ -2013,12 +1985,4 @@ | ... | @@ -2013,12 +1985,4 @@ |
| 2013 | return key; | 1985 | return key; |
| 2014 | } | 1986 | } |
| 2015 | } | 1987 | } |
| 2016 | | | |
| 2017 | function token(value, tokenClass, wantHtml){ | | |
| 2018 | if(wantHtml){ | | |
| 2019 | return '<span class="' + tokenClass + '">' + value + '</span>'; | | |
| 2020 | } else { | | |
| 2021 | return value + ''; | | |
| 2022 | } | | |
| 2023 | } | | |
| 2024 | })(); | 1988 | })(); |