mirror of
https://github.com/zigzap/zap.git
synced 2025-10-20 23:24:09 +00:00
remove docs folder. gh pages is now in different repo
This commit is contained in:
parent
a74dfb868d
commit
028574f3ed
4 changed files with 0 additions and 1402 deletions
415
docs/index.html
415
docs/index.html
|
@ -1,415 +0,0 @@
|
||||||
<!doctype html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Zig Documentation</title>
|
|
||||||
<link rel="icon" href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNTMgMTQwIj48ZyBmaWxsPSIjRjdBNDFEIj48Zz48cG9seWdvbiBwb2ludHM9IjQ2LDIyIDI4LDQ0IDE5LDMwIi8+PHBvbHlnb24gcG9pbnRzPSI0NiwyMiAzMywzMyAyOCw0NCAyMiw0NCAyMiw5NSAzMSw5NSAyMCwxMDAgMTIsMTE3IDAsMTE3IDAsMjIiIHNoYXBlLXJlbmRlcmluZz0iY3Jpc3BFZGdlcyIvPjxwb2x5Z29uIHBvaW50cz0iMzEsOTUgMTIsMTE3IDQsMTA2Ii8+PC9nPjxnPjxwb2x5Z29uIHBvaW50cz0iNTYsMjIgNjIsMzYgMzcsNDQiLz48cG9seWdvbiBwb2ludHM9IjU2LDIyIDExMSwyMiAxMTEsNDQgMzcsNDQgNTYsMzIiIHNoYXBlLXJlbmRlcmluZz0iY3Jpc3BFZGdlcyIvPjxwb2x5Z29uIHBvaW50cz0iMTE2LDk1IDk3LDExNyA5MCwxMDQiLz48cG9seWdvbiBwb2ludHM9IjExNiw5NSAxMDAsMTA0IDk3LDExNyA0MiwxMTcgNDIsOTUiIHNoYXBlLXJlbmRlcmluZz0iY3Jpc3BFZGdlcyIvPjxwb2x5Z29uIHBvaW50cz0iMTUwLDAgNTIsMTE3IDMsMTQwIDEwMSwyMiIvPjwvZz48Zz48cG9seWdvbiBwb2ludHM9IjE0MSwyMiAxNDAsNDAgMTIyLDQ1Ii8+PHBvbHlnb24gcG9pbnRzPSIxNTMsMjIgMTUzLDExNyAxMDYsMTE3IDEyMCwxMDUgMTI1LDk1IDEzMSw5NSAxMzEsNDUgMTIyLDQ1IDEzMiwzNiAxNDEsMjIiIHNoYXBlLXJlbmRlcmluZz0iY3Jpc3BFZGdlcyIvPjxwb2x5Z29uIHBvaW50cz0iMTI1LDk1IDEzMCwxMTAgMTA2LDExNyIvPjwvZz48L2c+PC9zdmc+">
|
|
||||||
<style type="text/css">
|
|
||||||
body {
|
|
||||||
font-family: system-ui, -apple-system, Roboto, "Segoe UI", sans-serif;
|
|
||||||
color: #000000;
|
|
||||||
}
|
|
||||||
.hidden {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
table {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
a {
|
|
||||||
color: #2A6286;
|
|
||||||
}
|
|
||||||
pre{
|
|
||||||
font-family:"Source Code Pro",monospace;
|
|
||||||
font-size:1em;
|
|
||||||
background-color:#F5F5F5;
|
|
||||||
padding: 1em;
|
|
||||||
margin: 0;
|
|
||||||
overflow-x: auto;
|
|
||||||
}
|
|
||||||
code {
|
|
||||||
font-family:"Source Code Pro",monospace;
|
|
||||||
font-size: 0.9em;
|
|
||||||
}
|
|
||||||
code a {
|
|
||||||
color: #000000;
|
|
||||||
}
|
|
||||||
#listFields > div, #listParams > div {
|
|
||||||
margin-bottom: 1em;
|
|
||||||
}
|
|
||||||
#hdrName a {
|
|
||||||
font-size: 0.7em;
|
|
||||||
padding-left: 1em;
|
|
||||||
}
|
|
||||||
.fieldDocs {
|
|
||||||
border: 1px solid #F5F5F5;
|
|
||||||
border-top: 0px;
|
|
||||||
padding: 1px 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#logo {
|
|
||||||
width: 8em;
|
|
||||||
padding: 0.5em 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#navWrap {
|
|
||||||
width: -moz-available;
|
|
||||||
width: -webkit-fill-available;
|
|
||||||
width: stretch;
|
|
||||||
margin-left: 11em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#search {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
nav {
|
|
||||||
width: 10em;
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
nav h2 {
|
|
||||||
font-size: 1.2em;
|
|
||||||
text-decoration: underline;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0.5em 0;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
nav p {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
section {
|
|
||||||
clear: both;
|
|
||||||
padding-top: 1em;
|
|
||||||
}
|
|
||||||
section h1 {
|
|
||||||
border-bottom: 1px dashed;
|
|
||||||
margin: 0 0;
|
|
||||||
}
|
|
||||||
section h2 {
|
|
||||||
font-size: 1.3em;
|
|
||||||
margin: 0.5em 0;
|
|
||||||
padding: 0;
|
|
||||||
border-bottom: 1px solid;
|
|
||||||
}
|
|
||||||
#listNav {
|
|
||||||
list-style-type: none;
|
|
||||||
margin: 0.5em 0 0 0;
|
|
||||||
padding: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
background-color: #f1f1f1;
|
|
||||||
}
|
|
||||||
#listNav li {
|
|
||||||
float:left;
|
|
||||||
}
|
|
||||||
#listNav li a {
|
|
||||||
display: block;
|
|
||||||
color: #000;
|
|
||||||
text-align: center;
|
|
||||||
padding: .5em .8em;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
#listNav li a:hover {
|
|
||||||
background-color: #555;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
#listNav li a.active {
|
|
||||||
background-color: #FFBB4D;
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
|
|
||||||
#helpDialog {
|
|
||||||
width: 21em;
|
|
||||||
height: 21em;
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
background-color: #333;
|
|
||||||
color: #fff;
|
|
||||||
border: 1px solid #fff;
|
|
||||||
}
|
|
||||||
#helpDialog h1 {
|
|
||||||
text-align: center;
|
|
||||||
font-size: 1.5em;
|
|
||||||
}
|
|
||||||
#helpDialog dt, #helpDialog dd {
|
|
||||||
display: inline;
|
|
||||||
margin: 0 0.2em;
|
|
||||||
}
|
|
||||||
kbd {
|
|
||||||
color: #000;
|
|
||||||
background-color: #fafbfc;
|
|
||||||
border-color: #d1d5da;
|
|
||||||
border-bottom-color: #c6cbd1;
|
|
||||||
box-shadow-color: #c6cbd1;
|
|
||||||
display: inline-block;
|
|
||||||
padding: 0.3em 0.2em;
|
|
||||||
font: 1.2em monospace;
|
|
||||||
line-height: 0.8em;
|
|
||||||
vertical-align: middle;
|
|
||||||
border: solid 1px;
|
|
||||||
border-radius: 3px;
|
|
||||||
box-shadow: inset 0 -1px 0;
|
|
||||||
cursor: default;
|
|
||||||
}
|
|
||||||
|
|
||||||
#listSearchResults li.selected {
|
|
||||||
background-color: #93e196;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tableFnErrors dt {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
dl > div {
|
|
||||||
padding: 0.5em;
|
|
||||||
border: 1px solid #c0c0c0;
|
|
||||||
margin-top: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
td {
|
|
||||||
vertical-align: top;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0.5em;
|
|
||||||
max-width: 20em;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
overflow-x: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.columns {
|
|
||||||
column-width: 20em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tok-kw {
|
|
||||||
color: #333;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.tok-str {
|
|
||||||
color: #d14;
|
|
||||||
}
|
|
||||||
.tok-builtin {
|
|
||||||
color: #0086b3;
|
|
||||||
}
|
|
||||||
.tok-comment {
|
|
||||||
color: #777;
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
.tok-fn {
|
|
||||||
color: #900;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.tok-null {
|
|
||||||
color: #008080;
|
|
||||||
}
|
|
||||||
.tok-number {
|
|
||||||
color: #008080;
|
|
||||||
}
|
|
||||||
.tok-type {
|
|
||||||
color: #458;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
body {
|
|
||||||
background-color: #111;
|
|
||||||
color: #bbb;
|
|
||||||
}
|
|
||||||
pre {
|
|
||||||
background-color: #222;
|
|
||||||
color: #ccc;
|
|
||||||
}
|
|
||||||
a {
|
|
||||||
color: #88f;
|
|
||||||
}
|
|
||||||
code a {
|
|
||||||
color: #ccc;
|
|
||||||
}
|
|
||||||
.fieldDocs {
|
|
||||||
border-color:#2A2A2A;
|
|
||||||
}
|
|
||||||
#listNav {
|
|
||||||
background-color: #333;
|
|
||||||
}
|
|
||||||
#listNav li a {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
#listNav li a:hover {
|
|
||||||
background-color: #555;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
#listNav li a.active {
|
|
||||||
background-color: #FFBB4D;
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
#listSearchResults li.selected {
|
|
||||||
background-color: #000;
|
|
||||||
}
|
|
||||||
#listSearchResults li.selected a {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
dl > div {
|
|
||||||
border-color: #373737;
|
|
||||||
}
|
|
||||||
.tok-kw {
|
|
||||||
color: #eee;
|
|
||||||
}
|
|
||||||
.tok-str {
|
|
||||||
color: #2e5;
|
|
||||||
}
|
|
||||||
.tok-builtin {
|
|
||||||
color: #ff894c;
|
|
||||||
}
|
|
||||||
.tok-comment {
|
|
||||||
color: #aa7;
|
|
||||||
}
|
|
||||||
.tok-fn {
|
|
||||||
color: #B1A0F8;
|
|
||||||
}
|
|
||||||
.tok-null {
|
|
||||||
color: #ff8080;
|
|
||||||
}
|
|
||||||
.tok-number {
|
|
||||||
color: #ff8080;
|
|
||||||
}
|
|
||||||
.tok-type {
|
|
||||||
color: #68f;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<nav>
|
|
||||||
<a class="logo" href="#">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 140">
|
|
||||||
<g fill="#F7A41D">
|
|
||||||
<g>
|
|
||||||
<polygon points="46,22 28,44 19,30"/>
|
|
||||||
<polygon points="46,22 33,33 28,44 22,44 22,95 31,95 20,100 12,117 0,117 0,22" shape-rendering="crispEdges"/>
|
|
||||||
<polygon points="31,95 12,117 4,106"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<polygon points="56,22 62,36 37,44"/>
|
|
||||||
<polygon points="56,22 111,22 111,44 37,44 56,32" shape-rendering="crispEdges"/>
|
|
||||||
<polygon points="116,95 97,117 90,104"/>
|
|
||||||
<polygon points="116,95 100,104 97,117 42,117 42,95" shape-rendering="crispEdges"/>
|
|
||||||
<polygon points="150,0 52,117 3,140 101,22"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<polygon points="141,22 140,40 122,45"/>
|
|
||||||
<polygon points="153,22 153,117 106,117 120,105 125,95 131,95 131,45 122,45 132,36 141,22" shape-rendering="crispEdges"/>
|
|
||||||
<polygon points="125,95 130,110 106,117"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<style>
|
|
||||||
#text { fill: #121212 }
|
|
||||||
@media (prefers-color-scheme: dark) { #text { fill: #f2f2f2 } }
|
|
||||||
</style>
|
|
||||||
<g id="text">
|
|
||||||
<g>
|
|
||||||
<polygon points="260,22 260,37 229,40 177,40 177,22" shape-rendering="crispEdges"/>
|
|
||||||
<polygon points="260,37 207,99 207,103 176,103 229,40 229,37"/>
|
|
||||||
<polygon points="261,99 261,117 176,117 176,103 206,99" shape-rendering="crispEdges"/>
|
|
||||||
</g>
|
|
||||||
<rect x="272" y="22" shape-rendering="crispEdges" width="22" height="95"/>
|
|
||||||
<g>
|
|
||||||
<polygon points="394,67 394,106 376,106 376,81 360,70 346,67" shape-rendering="crispEdges"/>
|
|
||||||
<polygon points="360,68 376,81 346,67"/>
|
|
||||||
<path d="M394,106c-10.2,7.3-24,12-37.7,12c-29,0-51.1-20.8-51.1-48.3c0-27.3,22.5-48.1,52-48.1 c14.3,0,29.2,5.5,38.9,14l-13,15c-7.1-6.3-16.8-10-25.9-10c-17,0-30.2,12.9-30.2,29.5c0,16.8,13.3,29.6,30.3,29.6 c5.7,0,12.8-2.3,19-5.5L394,106z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
</a>
|
|
||||||
</nav>
|
|
||||||
<div id="navWrap">
|
|
||||||
<input type="search" id="search" autocomplete="off" spellcheck="false" placeholder="`s` to search, `?` to see more options">
|
|
||||||
<div id="sectNav" class="hidden"><ul id="listNav"></ul></div>
|
|
||||||
</div>
|
|
||||||
<section>
|
|
||||||
<p id="status">Loading...</p>
|
|
||||||
<h1 id="hdrName" class="hidden"><span></span><a href="#">[src]</a></h1>
|
|
||||||
<div id="fnProto" class="hidden">
|
|
||||||
<pre><code id="fnProtoCode"></code></pre>
|
|
||||||
</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">
|
|
||||||
<p><span class="tok-type">anyerror</span> means the error set is known only at runtime.</p>
|
|
||||||
</div>
|
|
||||||
<div id="tableFnErrors"><dl id="listFnErrors"></dl></div>
|
|
||||||
</div>
|
|
||||||
<div id="sectSearchResults" class="hidden">
|
|
||||||
<h2>Search Results</h2>
|
|
||||||
<ul id="listSearchResults"></ul>
|
|
||||||
</div>
|
|
||||||
<div id="sectSearchNoResults" class="hidden">
|
|
||||||
<h2>No Results Found</h2>
|
|
||||||
<p>Press escape to exit search and then '?' to see more options.</p>
|
|
||||||
</div>
|
|
||||||
<div id="sectFields" class="hidden">
|
|
||||||
<h2>Fields</h2>
|
|
||||||
<div id="listFields">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="sectTypes" class="hidden">
|
|
||||||
<h2>Types</h2>
|
|
||||||
<ul id="listTypes" class="columns">
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div id="sectNamespaces" class="hidden">
|
|
||||||
<h2>Namespaces</h2>
|
|
||||||
<ul id="listNamespaces" class="columns">
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div id="sectGlobalVars" class="hidden">
|
|
||||||
<h2>Global Variables</h2>
|
|
||||||
<table>
|
|
||||||
<tbody id="listGlobalVars">
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<div id="sectValues" class="hidden">
|
|
||||||
<h2>Values</h2>
|
|
||||||
<table>
|
|
||||||
<tbody id="listValues">
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<div id="sectFns" class="hidden">
|
|
||||||
<h2>Functions</h2>
|
|
||||||
<dl id="listFns">
|
|
||||||
</dl>
|
|
||||||
</div>
|
|
||||||
<div id="sectErrSets" class="hidden">
|
|
||||||
<h2>Error Sets</h2>
|
|
||||||
<ul id="listErrSets" class="columns">
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div id="sectDocTests" class="hidden">
|
|
||||||
<h2>Example Usage</h2>
|
|
||||||
<pre><code id="docTestsCode"></code></pre>
|
|
||||||
</div>
|
|
||||||
<div id="sectSource" class="hidden">
|
|
||||||
<h2>Source Code</h2>
|
|
||||||
<pre><code id="sourceText"></code></pre>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<div id="helpDialog" class="hidden">
|
|
||||||
<h1>Keyboard Shortcuts</h1>
|
|
||||||
<dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd></dl>
|
|
||||||
<dl><dt><kbd>Esc</kbd></dt><dd>Clear focus; close this dialog</dd></dl>
|
|
||||||
<dl><dt><kbd>s</kbd></dt><dd>Focus the search field</dd></dl>
|
|
||||||
<dl><dt><kbd>u</kbd></dt><dd>Go to source code</dd></dl>
|
|
||||||
<dl><dt><kbd>↑</kbd></dt><dd>Move up in search results</dd></dl>
|
|
||||||
<dl><dt><kbd>↓</kbd></dt><dd>Move down in search results</dd></dl>
|
|
||||||
<dl><dt><kbd>⏎</kbd></dt><dd>Go to active search result</dd></dl>
|
|
||||||
</div>
|
|
||||||
<script src="main.js"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
987
docs/main.js
987
docs/main.js
|
@ -1,987 +0,0 @@
|
||||||
(function() {
|
|
||||||
const CAT_namespace = 0;
|
|
||||||
const CAT_global_variable = 1;
|
|
||||||
const CAT_function = 2;
|
|
||||||
const CAT_primitive = 3;
|
|
||||||
const CAT_error_set = 4;
|
|
||||||
const CAT_global_const = 5;
|
|
||||||
const CAT_alias = 6;
|
|
||||||
const CAT_type = 7;
|
|
||||||
const CAT_type_type = 8;
|
|
||||||
const CAT_type_function = 9;
|
|
||||||
|
|
||||||
const domDocTestsCode = document.getElementById("docTestsCode");
|
|
||||||
const domFnErrorsAnyError = document.getElementById("fnErrorsAnyError");
|
|
||||||
const domFnProto = document.getElementById("fnProto");
|
|
||||||
const domFnProtoCode = document.getElementById("fnProtoCode");
|
|
||||||
const domHdrName = document.getElementById("hdrName");
|
|
||||||
const domHelpModal = document.getElementById("helpDialog");
|
|
||||||
const domListErrSets = document.getElementById("listErrSets");
|
|
||||||
const domListFields = document.getElementById("listFields");
|
|
||||||
const domListParams = document.getElementById("listParams");
|
|
||||||
const domListFnErrors = document.getElementById("listFnErrors");
|
|
||||||
const domListFns = document.getElementById("listFns");
|
|
||||||
const domListGlobalVars = document.getElementById("listGlobalVars");
|
|
||||||
const domListInfo = document.getElementById("listInfo");
|
|
||||||
const domListNamespaces = document.getElementById("listNamespaces");
|
|
||||||
const domListNav = document.getElementById("listNav");
|
|
||||||
const domListSearchResults = document.getElementById("listSearchResults");
|
|
||||||
const domListTypes = document.getElementById("listTypes");
|
|
||||||
const domListValues = document.getElementById("listValues");
|
|
||||||
const domSearch = document.getElementById("search");
|
|
||||||
const domSectDocTests = document.getElementById("sectDocTests");
|
|
||||||
const domSectErrSets = document.getElementById("sectErrSets");
|
|
||||||
const domSectFields = document.getElementById("sectFields");
|
|
||||||
const domSectParams = document.getElementById("sectParams");
|
|
||||||
const domSectFnErrors = document.getElementById("sectFnErrors");
|
|
||||||
const domSectFns = document.getElementById("sectFns");
|
|
||||||
const domSectGlobalVars = document.getElementById("sectGlobalVars");
|
|
||||||
const domSectNamespaces = document.getElementById("sectNamespaces");
|
|
||||||
const domSectNav = document.getElementById("sectNav");
|
|
||||||
const domSectSearchNoResults = document.getElementById("sectSearchNoResults");
|
|
||||||
const domSectSearchResults = document.getElementById("sectSearchResults");
|
|
||||||
const domSectSource = document.getElementById("sectSource");
|
|
||||||
const domSectTypes = document.getElementById("sectTypes");
|
|
||||||
const domSectValues = document.getElementById("sectValues");
|
|
||||||
const domSourceText = document.getElementById("sourceText");
|
|
||||||
const domStatus = document.getElementById("status");
|
|
||||||
const domTableFnErrors = document.getElementById("tableFnErrors");
|
|
||||||
const domTldDocs = document.getElementById("tldDocs");
|
|
||||||
|
|
||||||
var searchTimer = null;
|
|
||||||
|
|
||||||
const curNav = {
|
|
||||||
// 0 = home
|
|
||||||
// 1 = decl (decl)
|
|
||||||
// 2 = source (path)
|
|
||||||
tag: 0,
|
|
||||||
// unsigned int: decl index
|
|
||||||
decl: null,
|
|
||||||
// string file name matching tarball path
|
|
||||||
path: null,
|
|
||||||
|
|
||||||
// when this is populated, pressing the "view source" command will
|
|
||||||
// navigate to this hash.
|
|
||||||
viewSourceHash: null,
|
|
||||||
};
|
|
||||||
var curNavSearch = "";
|
|
||||||
var curSearchIndex = -1;
|
|
||||||
var imFeelingLucky = false;
|
|
||||||
|
|
||||||
// names of modules in the same order as wasm
|
|
||||||
const moduleList = [];
|
|
||||||
|
|
||||||
let wasm_promise = fetch("main.wasm");
|
|
||||||
let sources_promise = fetch("sources.tar").then(function(response) {
|
|
||||||
if (!response.ok) throw new Error("unable to download sources");
|
|
||||||
return response.arrayBuffer();
|
|
||||||
});
|
|
||||||
var wasm_exports = null;
|
|
||||||
|
|
||||||
const text_decoder = new TextDecoder();
|
|
||||||
const text_encoder = new TextEncoder();
|
|
||||||
|
|
||||||
WebAssembly.instantiateStreaming(wasm_promise, {
|
|
||||||
js: {
|
|
||||||
log: function(ptr, len) {
|
|
||||||
const msg = decodeString(ptr, len);
|
|
||||||
console.log(msg);
|
|
||||||
},
|
|
||||||
panic: function (ptr, len) {
|
|
||||||
const msg = decodeString(ptr, len);
|
|
||||||
throw new Error("panic: " + msg);
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}).then(function(obj) {
|
|
||||||
wasm_exports = obj.instance.exports;
|
|
||||||
window.wasm = obj; // for debugging
|
|
||||||
|
|
||||||
sources_promise.then(function(buffer) {
|
|
||||||
const js_array = new Uint8Array(buffer);
|
|
||||||
const ptr = wasm_exports.alloc(js_array.length);
|
|
||||||
const wasm_array = new Uint8Array(wasm_exports.memory.buffer, ptr, js_array.length);
|
|
||||||
wasm_array.set(js_array);
|
|
||||||
wasm_exports.unpack(ptr, js_array.length);
|
|
||||||
|
|
||||||
updateModuleList();
|
|
||||||
|
|
||||||
window.addEventListener('popstate', onPopState, false);
|
|
||||||
domSearch.addEventListener('keydown', onSearchKeyDown, false);
|
|
||||||
domSearch.addEventListener('input', onSearchChange, false);
|
|
||||||
window.addEventListener('keydown', onWindowKeyDown, false);
|
|
||||||
onHashChange(null);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
function renderTitle() {
|
|
||||||
const suffix = " - Zig Documentation";
|
|
||||||
if (curNavSearch.length > 0) {
|
|
||||||
document.title = curNavSearch + " - Search" + suffix;
|
|
||||||
} else if (curNav.decl != null) {
|
|
||||||
document.title = fullyQualifiedName(curNav.decl) + suffix;
|
|
||||||
} else if (curNav.path != null) {
|
|
||||||
document.title = curNav.path + suffix;
|
|
||||||
} else {
|
|
||||||
document.title = moduleList[0] + suffix; // Home
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function render() {
|
|
||||||
domFnErrorsAnyError.classList.add("hidden");
|
|
||||||
domFnProto.classList.add("hidden");
|
|
||||||
domHdrName.classList.add("hidden");
|
|
||||||
domHelpModal.classList.add("hidden");
|
|
||||||
domSectErrSets.classList.add("hidden");
|
|
||||||
domSectDocTests.classList.add("hidden");
|
|
||||||
domSectFields.classList.add("hidden");
|
|
||||||
domSectParams.classList.add("hidden");
|
|
||||||
domSectFnErrors.classList.add("hidden");
|
|
||||||
domSectFns.classList.add("hidden");
|
|
||||||
domSectGlobalVars.classList.add("hidden");
|
|
||||||
domSectNamespaces.classList.add("hidden");
|
|
||||||
domSectNav.classList.add("hidden");
|
|
||||||
domSectSearchNoResults.classList.add("hidden");
|
|
||||||
domSectSearchResults.classList.add("hidden");
|
|
||||||
domSectSource.classList.add("hidden");
|
|
||||||
domSectTypes.classList.add("hidden");
|
|
||||||
domSectValues.classList.add("hidden");
|
|
||||||
domStatus.classList.add("hidden");
|
|
||||||
domTableFnErrors.classList.add("hidden");
|
|
||||||
domTldDocs.classList.add("hidden");
|
|
||||||
|
|
||||||
renderTitle();
|
|
||||||
|
|
||||||
if (curNavSearch !== "") return renderSearch();
|
|
||||||
|
|
||||||
switch (curNav.tag) {
|
|
||||||
case 0: return renderHome();
|
|
||||||
case 1:
|
|
||||||
if (curNav.decl == null) {
|
|
||||||
return renderNotFound();
|
|
||||||
} else {
|
|
||||||
return renderDecl(curNav.decl);
|
|
||||||
}
|
|
||||||
case 2: return renderSource(curNav.path);
|
|
||||||
default: throw new Error("invalid navigation state");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderHome() {
|
|
||||||
if (moduleList.length == 0) {
|
|
||||||
domStatus.textContent = "sources.tar contains no modules";
|
|
||||||
domStatus.classList.remove("hidden");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
return renderModule(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderModule(pkg_index) {
|
|
||||||
const root_decl = wasm_exports.find_module_root(pkg_index);
|
|
||||||
return renderDecl(root_decl);
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderDecl(decl_index) {
|
|
||||||
const category = wasm_exports.categorize_decl(decl_index, 0);
|
|
||||||
switch (category) {
|
|
||||||
case CAT_namespace:
|
|
||||||
return renderNamespacePage(decl_index);
|
|
||||||
case CAT_global_variable:
|
|
||||||
case CAT_primitive:
|
|
||||||
case CAT_global_const:
|
|
||||||
case CAT_type:
|
|
||||||
case CAT_type_type:
|
|
||||||
return renderGlobal(decl_index);
|
|
||||||
case CAT_function:
|
|
||||||
return renderFunction(decl_index);
|
|
||||||
case CAT_type_function:
|
|
||||||
return renderTypeFunction(decl_index);
|
|
||||||
case CAT_error_set:
|
|
||||||
return renderErrorSetPage(decl_index);
|
|
||||||
case CAT_alias:
|
|
||||||
return renderDecl(wasm_exports.get_aliasee());
|
|
||||||
default:
|
|
||||||
throw new Error("unrecognized category " + category);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderSource(path) {
|
|
||||||
const decl_index = findFileRoot(path);
|
|
||||||
if (decl_index == null) return renderNotFound();
|
|
||||||
|
|
||||||
renderNavFancy(decl_index, [{
|
|
||||||
name: "[src]",
|
|
||||||
href: location.hash,
|
|
||||||
}]);
|
|
||||||
|
|
||||||
domSourceText.innerHTML = declSourceHtml(decl_index);
|
|
||||||
|
|
||||||
domSectSource.classList.remove("hidden");
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderDeclHeading(decl_index) {
|
|
||||||
curNav.viewSourceHash = "#src/" + unwrapString(wasm_exports.decl_file_path(decl_index));
|
|
||||||
|
|
||||||
const hdrNameSpan = domHdrName.children[0];
|
|
||||||
const srcLink = domHdrName.children[1];
|
|
||||||
hdrNameSpan.innerText = unwrapString(wasm_exports.decl_category_name(decl_index));
|
|
||||||
srcLink.setAttribute('href', curNav.viewSourceHash);
|
|
||||||
domHdrName.classList.remove("hidden");
|
|
||||||
|
|
||||||
renderTopLevelDocs(decl_index);
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderTopLevelDocs(decl_index) {
|
|
||||||
const tld_docs_html = unwrapString(wasm_exports.decl_docs_html(decl_index, false));
|
|
||||||
if (tld_docs_html.length > 0) {
|
|
||||||
domTldDocs.innerHTML = tld_docs_html;
|
|
||||||
domTldDocs.classList.remove("hidden");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderNav(cur_nav_decl, list) {
|
|
||||||
return renderNavFancy(cur_nav_decl, []);
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderNavFancy(cur_nav_decl, list) {
|
|
||||||
{
|
|
||||||
// First, walk backwards the decl parents within a file.
|
|
||||||
let decl_it = cur_nav_decl;
|
|
||||||
let prev_decl_it = null;
|
|
||||||
while (decl_it != null) {
|
|
||||||
list.push({
|
|
||||||
name: declIndexName(decl_it),
|
|
||||||
href: navLinkDeclIndex(decl_it),
|
|
||||||
});
|
|
||||||
prev_decl_it = decl_it;
|
|
||||||
decl_it = declParent(decl_it);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Next, walk backwards the file path segments.
|
|
||||||
if (prev_decl_it != null) {
|
|
||||||
const file_path = fullyQualifiedName(prev_decl_it);
|
|
||||||
const parts = file_path.split(".");
|
|
||||||
parts.pop(); // skip last
|
|
||||||
for (;;) {
|
|
||||||
const href = navLinkFqn(parts.join("."));
|
|
||||||
const part = parts.pop();
|
|
||||||
if (!part) break;
|
|
||||||
list.push({
|
|
||||||
name: part,
|
|
||||||
href: href,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
list.reverse();
|
|
||||||
}
|
|
||||||
resizeDomList(domListNav, list.length, '<li><a href="#"></a></li>');
|
|
||||||
|
|
||||||
for (let i = 0; i < list.length; i += 1) {
|
|
||||||
const liDom = domListNav.children[i];
|
|
||||||
const aDom = liDom.children[0];
|
|
||||||
aDom.textContent = list[i].name;
|
|
||||||
aDom.setAttribute('href', list[i].href);
|
|
||||||
if (i + 1 == list.length) {
|
|
||||||
aDom.classList.add("active");
|
|
||||||
} else {
|
|
||||||
aDom.classList.remove("active");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
domSectNav.classList.remove("hidden");
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderNotFound() {
|
|
||||||
domStatus.textContent = "Declaration not found.";
|
|
||||||
domStatus.classList.remove("hidden");
|
|
||||||
}
|
|
||||||
|
|
||||||
function navLinkFqn(full_name) {
|
|
||||||
return '#' + full_name;
|
|
||||||
}
|
|
||||||
|
|
||||||
function navLinkDeclIndex(decl_index) {
|
|
||||||
return navLinkFqn(fullyQualifiedName(decl_index));
|
|
||||||
}
|
|
||||||
|
|
||||||
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 renderErrorSetPage(decl_index) {
|
|
||||||
renderNav(decl_index);
|
|
||||||
renderDeclHeading(decl_index);
|
|
||||||
|
|
||||||
const errorSetList = declErrorSet(decl_index).slice();
|
|
||||||
renderErrorSet(decl_index, errorSetList);
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderErrorSet(base_decl, errorSetList) {
|
|
||||||
if (errorSetList == null) {
|
|
||||||
domFnErrorsAnyError.classList.remove("hidden");
|
|
||||||
} else {
|
|
||||||
resizeDomList(domListFnErrors, errorSetList.length, '<div></div>');
|
|
||||||
for (let i = 0; i < errorSetList.length; i += 1) {
|
|
||||||
const divDom = domListFnErrors.children[i];
|
|
||||||
const html = unwrapString(wasm_exports.error_html(base_decl, errorSetList[i]));
|
|
||||||
divDom.innerHTML = html;
|
|
||||||
}
|
|
||||||
domTableFnErrors.classList.remove("hidden");
|
|
||||||
}
|
|
||||||
domSectFnErrors.classList.remove("hidden");
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderParams(decl_index) {
|
|
||||||
// Prevent params from being emptied next time wasm calls memory.grow.
|
|
||||||
const params = declParams(decl_index).slice();
|
|
||||||
if (params.length !== 0) {
|
|
||||||
resizeDomList(domListParams, params.length, '<div></div>');
|
|
||||||
for (let i = 0; i < params.length; i += 1) {
|
|
||||||
const divDom = domListParams.children[i];
|
|
||||||
divDom.innerHTML = unwrapString(wasm_exports.decl_param_html(decl_index, params[i]));
|
|
||||||
}
|
|
||||||
domSectParams.classList.remove("hidden");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderTypeFunction(decl_index) {
|
|
||||||
renderNav(decl_index);
|
|
||||||
renderDeclHeading(decl_index);
|
|
||||||
renderTopLevelDocs(decl_index);
|
|
||||||
renderParams(decl_index);
|
|
||||||
renderDocTests(decl_index);
|
|
||||||
|
|
||||||
const members = unwrapSlice32(wasm_exports.type_fn_members(decl_index, false)).slice();
|
|
||||||
const fields = unwrapSlice32(wasm_exports.type_fn_fields(decl_index)).slice();
|
|
||||||
if (members.length !== 0 || fields.length !== 0) {
|
|
||||||
renderNamespace(decl_index, members, fields);
|
|
||||||
} else {
|
|
||||||
domSourceText.innerHTML = declSourceHtml(decl_index);
|
|
||||||
domSectSource.classList.remove("hidden");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderDocTests(decl_index) {
|
|
||||||
const doctest_html = declDoctestHtml(decl_index);
|
|
||||||
if (doctest_html.length > 0) {
|
|
||||||
domDocTestsCode.innerHTML = doctest_html;
|
|
||||||
domSectDocTests.classList.remove("hidden");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderFunction(decl_index) {
|
|
||||||
renderNav(decl_index);
|
|
||||||
renderDeclHeading(decl_index);
|
|
||||||
renderTopLevelDocs(decl_index);
|
|
||||||
renderParams(decl_index);
|
|
||||||
renderDocTests(decl_index);
|
|
||||||
|
|
||||||
domFnProtoCode.innerHTML = fnProtoHtml(decl_index, false);
|
|
||||||
domFnProto.classList.remove("hidden");
|
|
||||||
|
|
||||||
|
|
||||||
const errorSetNode = fnErrorSet(decl_index);
|
|
||||||
if (errorSetNode != null) {
|
|
||||||
const base_decl = wasm_exports.fn_error_set_decl(decl_index, errorSetNode);
|
|
||||||
renderErrorSet(base_decl, errorSetNodeList(decl_index, errorSetNode));
|
|
||||||
}
|
|
||||||
|
|
||||||
domSourceText.innerHTML = declSourceHtml(decl_index);
|
|
||||||
domSectSource.classList.remove("hidden");
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderGlobal(decl_index) {
|
|
||||||
renderNav(decl_index);
|
|
||||||
renderDeclHeading(decl_index);
|
|
||||||
|
|
||||||
const docs_html = declDocsHtmlShort(decl_index);
|
|
||||||
if (docs_html.length > 0) {
|
|
||||||
domTldDocs.innerHTML = docs_html;
|
|
||||||
domTldDocs.classList.remove("hidden");
|
|
||||||
}
|
|
||||||
|
|
||||||
domSourceText.innerHTML = declSourceHtml(decl_index);
|
|
||||||
domSectSource.classList.remove("hidden");
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderNamespace(base_decl, members, fields) {
|
|
||||||
const typesList = [];
|
|
||||||
const namespacesList = [];
|
|
||||||
const errSetsList = [];
|
|
||||||
const fnsList = [];
|
|
||||||
const varsList = [];
|
|
||||||
const valsList = [];
|
|
||||||
|
|
||||||
member_loop: for (let i = 0; i < members.length; i += 1) {
|
|
||||||
let member = members[i];
|
|
||||||
const original = member;
|
|
||||||
while (true) {
|
|
||||||
const member_category = wasm_exports.categorize_decl(member, 0);
|
|
||||||
switch (member_category) {
|
|
||||||
case CAT_namespace:
|
|
||||||
if (wasm_exports.decl_field_count(member) > 0) {
|
|
||||||
typesList.push({original: original, member: member});
|
|
||||||
} else {
|
|
||||||
namespacesList.push({original: original, member: member});
|
|
||||||
}
|
|
||||||
continue member_loop;
|
|
||||||
case CAT_namespace:
|
|
||||||
namespacesList.push({original: original, member: member});
|
|
||||||
continue member_loop;
|
|
||||||
case CAT_global_variable:
|
|
||||||
varsList.push(member);
|
|
||||||
continue member_loop;
|
|
||||||
case CAT_function:
|
|
||||||
fnsList.push(member);
|
|
||||||
continue member_loop;
|
|
||||||
case CAT_type:
|
|
||||||
case CAT_type_type:
|
|
||||||
case CAT_type_function:
|
|
||||||
typesList.push({original: original, member: member});
|
|
||||||
continue member_loop;
|
|
||||||
case CAT_error_set:
|
|
||||||
errSetsList.push({original: original, member: member});
|
|
||||||
continue member_loop;
|
|
||||||
case CAT_global_const:
|
|
||||||
case CAT_primitive:
|
|
||||||
valsList.push({original: original, member: member});
|
|
||||||
continue member_loop;
|
|
||||||
case CAT_alias:
|
|
||||||
member = wasm_exports.get_aliasee();
|
|
||||||
continue;
|
|
||||||
default:
|
|
||||||
throw new Error("uknown category: " + member_category);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
typesList.sort(byDeclIndexName2);
|
|
||||||
namespacesList.sort(byDeclIndexName2);
|
|
||||||
errSetsList.sort(byDeclIndexName2);
|
|
||||||
fnsList.sort(byDeclIndexName);
|
|
||||||
varsList.sort(byDeclIndexName);
|
|
||||||
valsList.sort(byDeclIndexName2);
|
|
||||||
|
|
||||||
if (typesList.length !== 0) {
|
|
||||||
resizeDomList(domListTypes, typesList.length, '<li><a href="#"></a></li>');
|
|
||||||
for (let i = 0; i < typesList.length; i += 1) {
|
|
||||||
const liDom = domListTypes.children[i];
|
|
||||||
const aDom = liDom.children[0];
|
|
||||||
const original_decl = typesList[i].original;
|
|
||||||
const decl = typesList[i].member;
|
|
||||||
aDom.textContent = declIndexName(original_decl);
|
|
||||||
aDom.setAttribute('href', navLinkDeclIndex(decl));
|
|
||||||
}
|
|
||||||
domSectTypes.classList.remove("hidden");
|
|
||||||
}
|
|
||||||
if (namespacesList.length !== 0) {
|
|
||||||
resizeDomList(domListNamespaces, namespacesList.length, '<li><a href="#"></a></li>');
|
|
||||||
for (let i = 0; i < namespacesList.length; i += 1) {
|
|
||||||
const liDom = domListNamespaces.children[i];
|
|
||||||
const aDom = liDom.children[0];
|
|
||||||
const original_decl = namespacesList[i].original;
|
|
||||||
const decl = namespacesList[i].member;
|
|
||||||
aDom.textContent = declIndexName(original_decl);
|
|
||||||
aDom.setAttribute('href', navLinkDeclIndex(decl));
|
|
||||||
}
|
|
||||||
domSectNamespaces.classList.remove("hidden");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (errSetsList.length !== 0) {
|
|
||||||
resizeDomList(domListErrSets, errSetsList.length, '<li><a href="#"></a></li>');
|
|
||||||
for (let i = 0; i < errSetsList.length; i += 1) {
|
|
||||||
const liDom = domListErrSets.children[i];
|
|
||||||
const aDom = liDom.children[0];
|
|
||||||
const original_decl = errSetsList[i].original;
|
|
||||||
const decl = errSetsList[i].member;
|
|
||||||
aDom.textContent = declIndexName(original_decl);
|
|
||||||
aDom.setAttribute('href', navLinkDeclIndex(decl));
|
|
||||||
}
|
|
||||||
domSectErrSets.classList.remove("hidden");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fnsList.length !== 0) {
|
|
||||||
resizeDomList(domListFns, fnsList.length,
|
|
||||||
'<div><dt><code></code></dt><dd></dd></div>');
|
|
||||||
for (let i = 0; i < fnsList.length; i += 1) {
|
|
||||||
const decl = fnsList[i];
|
|
||||||
const divDom = domListFns.children[i];
|
|
||||||
|
|
||||||
const dtDom = divDom.children[0];
|
|
||||||
const ddDocs = divDom.children[1];
|
|
||||||
const protoCodeDom = dtDom.children[0];
|
|
||||||
|
|
||||||
protoCodeDom.innerHTML = fnProtoHtml(decl, true);
|
|
||||||
ddDocs.innerHTML = declDocsHtmlShort(decl);
|
|
||||||
}
|
|
||||||
domSectFns.classList.remove("hidden");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fields.length !== 0) {
|
|
||||||
resizeDomList(domListFields, fields.length, '<div></div>');
|
|
||||||
for (let i = 0; i < fields.length; i += 1) {
|
|
||||||
const divDom = domListFields.children[i];
|
|
||||||
divDom.innerHTML = unwrapString(wasm_exports.decl_field_html(base_decl, fields[i]));
|
|
||||||
}
|
|
||||||
domSectFields.classList.remove("hidden");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (varsList.length !== 0) {
|
|
||||||
resizeDomList(domListGlobalVars, varsList.length,
|
|
||||||
'<tr><td><a href="#"></a></td><td></td><td></td></tr>');
|
|
||||||
for (let i = 0; i < varsList.length; i += 1) {
|
|
||||||
const decl = varsList[i];
|
|
||||||
const trDom = domListGlobalVars.children[i];
|
|
||||||
|
|
||||||
const tdName = trDom.children[0];
|
|
||||||
const tdNameA = tdName.children[0];
|
|
||||||
const tdType = trDom.children[1];
|
|
||||||
const tdDesc = trDom.children[2];
|
|
||||||
|
|
||||||
tdNameA.setAttribute('href', navLinkDeclIndex(decl));
|
|
||||||
tdNameA.textContent = declIndexName(decl);
|
|
||||||
|
|
||||||
tdType.innerHTML = declTypeHtml(decl);
|
|
||||||
tdDesc.innerHTML = declDocsHtmlShort(decl);
|
|
||||||
}
|
|
||||||
domSectGlobalVars.classList.remove("hidden");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (valsList.length !== 0) {
|
|
||||||
resizeDomList(domListValues, valsList.length,
|
|
||||||
'<tr><td><a href="#"></a></td><td></td><td></td></tr>');
|
|
||||||
for (let i = 0; i < valsList.length; i += 1) {
|
|
||||||
const trDom = domListValues.children[i];
|
|
||||||
const tdName = trDom.children[0];
|
|
||||||
const tdNameA = tdName.children[0];
|
|
||||||
const tdType = trDom.children[1];
|
|
||||||
const tdDesc = trDom.children[2];
|
|
||||||
|
|
||||||
const original_decl = valsList[i].original;
|
|
||||||
const decl = valsList[i].member;
|
|
||||||
tdNameA.setAttribute('href', navLinkDeclIndex(decl));
|
|
||||||
tdNameA.textContent = declIndexName(original_decl);
|
|
||||||
|
|
||||||
tdType.innerHTML = declTypeHtml(decl);
|
|
||||||
tdDesc.innerHTML = declDocsHtmlShort(decl);
|
|
||||||
}
|
|
||||||
domSectValues.classList.remove("hidden");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderNamespacePage(decl_index) {
|
|
||||||
renderNav(decl_index);
|
|
||||||
renderDeclHeading(decl_index);
|
|
||||||
const members = namespaceMembers(decl_index, false).slice();
|
|
||||||
const fields = declFields(decl_index).slice();
|
|
||||||
renderNamespace(decl_index, members, fields);
|
|
||||||
}
|
|
||||||
|
|
||||||
function operatorCompare(a, b) {
|
|
||||||
if (a === b) {
|
|
||||||
return 0;
|
|
||||||
} else if (a < b) {
|
|
||||||
return -1;
|
|
||||||
} else {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateCurNav(location_hash) {
|
|
||||||
curNav.tag = 0;
|
|
||||||
curNav.decl = null;
|
|
||||||
curNav.path = null;
|
|
||||||
curNav.viewSourceHash = null;
|
|
||||||
curNavSearch = "";
|
|
||||||
|
|
||||||
if (location_hash.length > 1 && location_hash[0] === '#') {
|
|
||||||
const query = location_hash.substring(1);
|
|
||||||
const qpos = query.indexOf("?");
|
|
||||||
let nonSearchPart;
|
|
||||||
if (qpos === -1) {
|
|
||||||
nonSearchPart = query;
|
|
||||||
} else {
|
|
||||||
nonSearchPart = query.substring(0, qpos);
|
|
||||||
curNavSearch = decodeURIComponent(query.substring(qpos + 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nonSearchPart.length > 0) {
|
|
||||||
const source_mode = nonSearchPart.startsWith("src/");
|
|
||||||
if (source_mode) {
|
|
||||||
curNav.tag = 2;
|
|
||||||
curNav.path = nonSearchPart.substring(4);
|
|
||||||
} else {
|
|
||||||
curNav.tag = 1;
|
|
||||||
curNav.decl = findDecl(nonSearchPart);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function onHashChange(state) {
|
|
||||||
history.replaceState({}, "");
|
|
||||||
navigate(location.hash);
|
|
||||||
if (state == null) window.scrollTo({top: 0});
|
|
||||||
}
|
|
||||||
|
|
||||||
function onPopState(ev) {
|
|
||||||
onHashChange(ev.state);
|
|
||||||
}
|
|
||||||
|
|
||||||
function navigate(location_hash) {
|
|
||||||
updateCurNav(location_hash);
|
|
||||||
if (domSearch.value !== curNavSearch) {
|
|
||||||
domSearch.value = curNavSearch;
|
|
||||||
}
|
|
||||||
render();
|
|
||||||
if (imFeelingLucky) {
|
|
||||||
imFeelingLucky = false;
|
|
||||||
activateSelectedResult();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function activateSelectedResult() {
|
|
||||||
if (domSectSearchResults.classList.contains("hidden")) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var liDom = domListSearchResults.children[curSearchIndex];
|
|
||||||
if (liDom == null && domListSearchResults.children.length !== 0) {
|
|
||||||
liDom = domListSearchResults.children[0];
|
|
||||||
}
|
|
||||||
if (liDom != null) {
|
|
||||||
var aDom = liDom.children[0];
|
|
||||||
location.href = aDom.getAttribute("href");
|
|
||||||
curSearchIndex = -1;
|
|
||||||
}
|
|
||||||
domSearch.blur();
|
|
||||||
}
|
|
||||||
|
|
||||||
function onSearchKeyDown(ev) {
|
|
||||||
switch (ev.code) {
|
|
||||||
case "Enter":
|
|
||||||
if (ev.shiftKey || ev.ctrlKey || ev.altKey) return;
|
|
||||||
|
|
||||||
clearAsyncSearch();
|
|
||||||
imFeelingLucky = true;
|
|
||||||
location.hash = computeSearchHash();
|
|
||||||
|
|
||||||
ev.preventDefault();
|
|
||||||
ev.stopPropagation();
|
|
||||||
return;
|
|
||||||
case "Escape":
|
|
||||||
if (ev.shiftKey || ev.ctrlKey || ev.altKey) return;
|
|
||||||
|
|
||||||
domSearch.value = "";
|
|
||||||
domSearch.blur();
|
|
||||||
curSearchIndex = -1;
|
|
||||||
ev.preventDefault();
|
|
||||||
ev.stopPropagation();
|
|
||||||
startSearch();
|
|
||||||
return;
|
|
||||||
case "ArrowUp":
|
|
||||||
if (ev.shiftKey || ev.ctrlKey || ev.altKey) return;
|
|
||||||
|
|
||||||
moveSearchCursor(-1);
|
|
||||||
ev.preventDefault();
|
|
||||||
ev.stopPropagation();
|
|
||||||
return;
|
|
||||||
case "ArrowDown":
|
|
||||||
if (ev.shiftKey || ev.ctrlKey || ev.altKey) return;
|
|
||||||
|
|
||||||
moveSearchCursor(1);
|
|
||||||
ev.preventDefault();
|
|
||||||
ev.stopPropagation();
|
|
||||||
return;
|
|
||||||
default:
|
|
||||||
ev.stopPropagation(); // prevent keyboard shortcuts
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function onSearchChange(ev) {
|
|
||||||
curSearchIndex = -1;
|
|
||||||
startAsyncSearch();
|
|
||||||
}
|
|
||||||
|
|
||||||
function moveSearchCursor(dir) {
|
|
||||||
if (curSearchIndex < 0 || curSearchIndex >= domListSearchResults.children.length) {
|
|
||||||
if (dir > 0) {
|
|
||||||
curSearchIndex = -1 + dir;
|
|
||||||
} else if (dir < 0) {
|
|
||||||
curSearchIndex = domListSearchResults.children.length + dir;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
curSearchIndex += dir;
|
|
||||||
}
|
|
||||||
if (curSearchIndex < 0) {
|
|
||||||
curSearchIndex = 0;
|
|
||||||
}
|
|
||||||
if (curSearchIndex >= domListSearchResults.children.length) {
|
|
||||||
curSearchIndex = domListSearchResults.children.length - 1;
|
|
||||||
}
|
|
||||||
renderSearchCursor();
|
|
||||||
}
|
|
||||||
|
|
||||||
function onWindowKeyDown(ev) {
|
|
||||||
switch (ev.code) {
|
|
||||||
case "Escape":
|
|
||||||
if (ev.shiftKey || ev.ctrlKey || ev.altKey) return;
|
|
||||||
if (!domHelpModal.classList.contains("hidden")) {
|
|
||||||
domHelpModal.classList.add("hidden");
|
|
||||||
ev.preventDefault();
|
|
||||||
ev.stopPropagation();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "KeyS":
|
|
||||||
if (ev.shiftKey || ev.ctrlKey || ev.altKey) return;
|
|
||||||
domSearch.focus();
|
|
||||||
domSearch.select();
|
|
||||||
ev.preventDefault();
|
|
||||||
ev.stopPropagation();
|
|
||||||
startAsyncSearch();
|
|
||||||
break;
|
|
||||||
case "KeyU":
|
|
||||||
if (ev.shiftKey || ev.ctrlKey || ev.altKey) return;
|
|
||||||
ev.preventDefault();
|
|
||||||
ev.stopPropagation();
|
|
||||||
navigateToSource();
|
|
||||||
break;
|
|
||||||
case "Slash":
|
|
||||||
if (!ev.shiftKey || ev.ctrlKey || ev.altKey) return;
|
|
||||||
ev.preventDefault();
|
|
||||||
ev.stopPropagation();
|
|
||||||
showHelpModal();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function showHelpModal() {
|
|
||||||
domHelpModal.classList.remove("hidden");
|
|
||||||
domHelpModal.style.left = (window.innerWidth / 2 - domHelpModal.clientWidth / 2) + "px";
|
|
||||||
domHelpModal.style.top = (window.innerHeight / 2 - domHelpModal.clientHeight / 2) + "px";
|
|
||||||
domHelpModal.focus();
|
|
||||||
}
|
|
||||||
|
|
||||||
function navigateToSource() {
|
|
||||||
if (curNav.viewSourceHash != null) {
|
|
||||||
location.hash = curNav.viewSourceHash;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function clearAsyncSearch() {
|
|
||||||
if (searchTimer != null) {
|
|
||||||
clearTimeout(searchTimer);
|
|
||||||
searchTimer = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function startAsyncSearch() {
|
|
||||||
clearAsyncSearch();
|
|
||||||
searchTimer = setTimeout(startSearch, 10);
|
|
||||||
}
|
|
||||||
function computeSearchHash() {
|
|
||||||
// How location.hash works:
|
|
||||||
// 1. http://example.com/ => ""
|
|
||||||
// 2. http://example.com/# => ""
|
|
||||||
// 3. http://example.com/#foo => "#foo"
|
|
||||||
// wat
|
|
||||||
const oldWatHash = location.hash;
|
|
||||||
const oldHash = oldWatHash.startsWith("#") ? oldWatHash : "#" + oldWatHash;
|
|
||||||
const parts = oldHash.split("?");
|
|
||||||
const newPart2 = (domSearch.value === "") ? "" : ("?" + domSearch.value);
|
|
||||||
return parts[0] + newPart2;
|
|
||||||
}
|
|
||||||
function startSearch() {
|
|
||||||
clearAsyncSearch();
|
|
||||||
navigate(computeSearchHash());
|
|
||||||
}
|
|
||||||
function renderSearch() {
|
|
||||||
renderNav(curNav.decl);
|
|
||||||
|
|
||||||
const ignoreCase = (curNavSearch.toLowerCase() === curNavSearch);
|
|
||||||
const results = executeQuery(curNavSearch, ignoreCase);
|
|
||||||
|
|
||||||
if (results.length !== 0) {
|
|
||||||
resizeDomList(domListSearchResults, results.length, '<li><a href="#"></a></li>');
|
|
||||||
|
|
||||||
for (let i = 0; i < results.length; i += 1) {
|
|
||||||
const liDom = domListSearchResults.children[i];
|
|
||||||
const aDom = liDom.children[0];
|
|
||||||
const match = results[i];
|
|
||||||
const full_name = fullyQualifiedName(match);
|
|
||||||
aDom.textContent = full_name;
|
|
||||||
aDom.setAttribute('href', navLinkFqn(full_name));
|
|
||||||
}
|
|
||||||
renderSearchCursor();
|
|
||||||
|
|
||||||
domSectSearchResults.classList.remove("hidden");
|
|
||||||
} else {
|
|
||||||
domSectSearchNoResults.classList.remove("hidden");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderSearchCursor() {
|
|
||||||
for (let i = 0; i < domListSearchResults.children.length; i += 1) {
|
|
||||||
var liDom = domListSearchResults.children[i];
|
|
||||||
if (curSearchIndex === i) {
|
|
||||||
liDom.classList.add("selected");
|
|
||||||
} else {
|
|
||||||
liDom.classList.remove("selected");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateModuleList() {
|
|
||||||
moduleList.length = 0;
|
|
||||||
for (let i = 0;; i += 1) {
|
|
||||||
const name = unwrapString(wasm_exports.module_name(i));
|
|
||||||
if (name.length == 0) break;
|
|
||||||
moduleList.push(name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function byDeclIndexName(a, b) {
|
|
||||||
const a_name = declIndexName(a);
|
|
||||||
const b_name = declIndexName(b);
|
|
||||||
return operatorCompare(a_name, b_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
function byDeclIndexName2(a, b) {
|
|
||||||
const a_name = declIndexName(a.original);
|
|
||||||
const b_name = declIndexName(b.original);
|
|
||||||
return operatorCompare(a_name, b_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
function decodeString(ptr, len) {
|
|
||||||
if (len === 0) return "";
|
|
||||||
return text_decoder.decode(new Uint8Array(wasm_exports.memory.buffer, ptr, len));
|
|
||||||
}
|
|
||||||
|
|
||||||
function unwrapString(bigint) {
|
|
||||||
const ptr = Number(bigint & 0xffffffffn);
|
|
||||||
const len = Number(bigint >> 32n);
|
|
||||||
return decodeString(ptr, len);
|
|
||||||
}
|
|
||||||
|
|
||||||
function declTypeHtml(decl_index) {
|
|
||||||
return unwrapString(wasm_exports.decl_type_html(decl_index));
|
|
||||||
}
|
|
||||||
|
|
||||||
function declDocsHtmlShort(decl_index) {
|
|
||||||
return unwrapString(wasm_exports.decl_docs_html(decl_index, true));
|
|
||||||
}
|
|
||||||
|
|
||||||
function fullyQualifiedName(decl_index) {
|
|
||||||
return unwrapString(wasm_exports.decl_fqn(decl_index));
|
|
||||||
}
|
|
||||||
|
|
||||||
function declIndexName(decl_index) {
|
|
||||||
return unwrapString(wasm_exports.decl_name(decl_index));
|
|
||||||
}
|
|
||||||
|
|
||||||
function declSourceHtml(decl_index) {
|
|
||||||
return unwrapString(wasm_exports.decl_source_html(decl_index));
|
|
||||||
}
|
|
||||||
|
|
||||||
function declDoctestHtml(decl_index) {
|
|
||||||
return unwrapString(wasm_exports.decl_doctest_html(decl_index));
|
|
||||||
}
|
|
||||||
|
|
||||||
function fnProtoHtml(decl_index, linkify_fn_name) {
|
|
||||||
return unwrapString(wasm_exports.decl_fn_proto_html(decl_index, linkify_fn_name));
|
|
||||||
}
|
|
||||||
|
|
||||||
function setQueryString(s) {
|
|
||||||
const jsArray = text_encoder.encode(s);
|
|
||||||
const len = jsArray.length;
|
|
||||||
const ptr = wasm_exports.query_begin(len);
|
|
||||||
const wasmArray = new Uint8Array(wasm_exports.memory.buffer, ptr, len);
|
|
||||||
wasmArray.set(jsArray);
|
|
||||||
}
|
|
||||||
|
|
||||||
function executeQuery(query_string, ignore_case) {
|
|
||||||
setQueryString(query_string);
|
|
||||||
const ptr = wasm_exports.query_exec(ignore_case);
|
|
||||||
const head = new Uint32Array(wasm_exports.memory.buffer, ptr, 1);
|
|
||||||
const len = head[0];
|
|
||||||
return new Uint32Array(wasm_exports.memory.buffer, ptr + 4, len);
|
|
||||||
}
|
|
||||||
|
|
||||||
function namespaceMembers(decl_index, include_private) {
|
|
||||||
return unwrapSlice32(wasm_exports.namespace_members(decl_index, include_private));
|
|
||||||
}
|
|
||||||
|
|
||||||
function declFields(decl_index) {
|
|
||||||
return unwrapSlice32(wasm_exports.decl_fields(decl_index));
|
|
||||||
}
|
|
||||||
|
|
||||||
function declParams(decl_index) {
|
|
||||||
return unwrapSlice32(wasm_exports.decl_params(decl_index));
|
|
||||||
}
|
|
||||||
|
|
||||||
function declErrorSet(decl_index) {
|
|
||||||
return unwrapSlice64(wasm_exports.decl_error_set(decl_index));
|
|
||||||
}
|
|
||||||
|
|
||||||
function errorSetNodeList(base_decl, err_set_node) {
|
|
||||||
return unwrapSlice64(wasm_exports.error_set_node_list(base_decl, err_set_node));
|
|
||||||
}
|
|
||||||
|
|
||||||
function unwrapSlice32(bigint) {
|
|
||||||
const ptr = Number(bigint & 0xffffffffn);
|
|
||||||
const len = Number(bigint >> 32n);
|
|
||||||
if (len === 0) return [];
|
|
||||||
return new Uint32Array(wasm_exports.memory.buffer, ptr, len);
|
|
||||||
}
|
|
||||||
|
|
||||||
function unwrapSlice64(bigint) {
|
|
||||||
const ptr = Number(bigint & 0xffffffffn);
|
|
||||||
const len = Number(bigint >> 32n);
|
|
||||||
if (len === 0) return [];
|
|
||||||
return new BigUint64Array(wasm_exports.memory.buffer, ptr, len);
|
|
||||||
}
|
|
||||||
|
|
||||||
function findDecl(fqn) {
|
|
||||||
setInputString(fqn);
|
|
||||||
const result = wasm_exports.find_decl();
|
|
||||||
if (result === -1) return null;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function findFileRoot(path) {
|
|
||||||
setInputString(path);
|
|
||||||
const result = wasm_exports.find_file_root();
|
|
||||||
if (result === -1) return null;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function declParent(decl_index) {
|
|
||||||
const result = wasm_exports.decl_parent(decl_index);
|
|
||||||
if (result === -1) return null;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function fnErrorSet(decl_index) {
|
|
||||||
const result = wasm_exports.fn_error_set(decl_index);
|
|
||||||
if (result === 0) return null;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function setInputString(s) {
|
|
||||||
const jsArray = text_encoder.encode(s);
|
|
||||||
const len = jsArray.length;
|
|
||||||
const ptr = wasm_exports.set_input_string(len);
|
|
||||||
const wasmArray = new Uint8Array(wasm_exports.memory.buffer, ptr, len);
|
|
||||||
wasmArray.set(jsArray);
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
|
|
BIN
docs/main.wasm
BIN
docs/main.wasm
Binary file not shown.
BIN
docs/sources.tar
BIN
docs/sources.tar
Binary file not shown.
Loading…
Add table
Reference in a new issue