update containers
This commit is contained in:
parent
f5e12fa69c
commit
fe88ed7aae
8 changed files with 403 additions and 147 deletions
|
@ -75,6 +75,9 @@ ENV CARGO_HOME=/root/.cargo
|
|||
# install wasm32-unknown-unknown
|
||||
RUN rustup target add wasm32-unknown-unknown
|
||||
|
||||
# update rust
|
||||
RUN rustup update
|
||||
|
||||
RUN curl https://raw.githubusercontent.com/SeaQL/FireDBG.for.Rust/main/install.sh -sSf | sh
|
||||
|
||||
WORKDIR /workspaces
|
14
.github/workflows/clippy.yml
vendored
14
.github/workflows/clippy.yml
vendored
|
@ -21,22 +21,16 @@ on:
|
|||
jobs:
|
||||
rust-clippy-analyze:
|
||||
name: Run rust-clippy analyzing
|
||||
runs-on: ubuntu-latest
|
||||
container: ghcr.io/sevki/devcontainer:main
|
||||
runs-on: self-hosted
|
||||
permissions:
|
||||
contents: read
|
||||
security-events: write
|
||||
actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status
|
||||
|
||||
steps:
|
||||
- name: Tailscale
|
||||
uses: tailscale/github-action@v2
|
||||
with:
|
||||
oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }}
|
||||
oauth-secret: ${{ secrets.TS_OAUTH_SECRET }}
|
||||
tags: tag:ci
|
||||
version: 1.66.4
|
||||
args: --accept-routes --accept-dns
|
||||
- name: Modify hosts file
|
||||
run: |
|
||||
echo "66.241.125.220 ok.software" >> /etc/hosts
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
|
|
2
.github/workflows/mdbook.yml
vendored
2
.github/workflows/mdbook.yml
vendored
|
@ -28,7 +28,7 @@ jobs:
|
|||
# Build job
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
container: ghcr.io/oknotokcomputer/devcontainer/base:latest
|
||||
container: ghcr.io/sevki/devcontainer:main
|
||||
env:
|
||||
MDBOOK_VERSION: 0.4.40
|
||||
steps:
|
||||
|
|
15
.github/workflows/rust.yml
vendored
15
.github/workflows/rust.yml
vendored
|
@ -13,7 +13,7 @@ jobs:
|
|||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
container: ghcr.io/oknotokcomputer/devcontainer/base:latest
|
||||
container: ghcr.io/sevki/devcontainer:main
|
||||
strategy:
|
||||
matrix:
|
||||
targets: [
|
||||
|
@ -37,16 +37,13 @@ jobs:
|
|||
rustup component add rust-src
|
||||
rustup target add ${{ matrix.targets }}
|
||||
rustup update
|
||||
- name: Build ${{ matrix.packages }} for ${{ matrix.targets }}
|
||||
run: cargo build -Zbuild-std --verbose --target ${{ matrix.targets }} -p ${{ matrix.packages }}
|
||||
- name: Test ${{ matrix.packages }} for ${{ matrix.targets }}
|
||||
run: cargo test --verbose --target ${{ matrix.targets }} -p ${{ matrix.packages }}
|
||||
# - name: Build ${{ matrix.packages }} for ${{ matrix.targets }}
|
||||
# run: cargo build --verbose --target ${{ matrix.targets }} -p ${{ matrix.packages }}
|
||||
# - name: Test ${{ matrix.packages }} for ${{ matrix.targets }}
|
||||
# run: cargo test --verbose --target ${{ matrix.targets }} -p ${{ matrix.packages }}
|
||||
- name: Install mdBook
|
||||
run: |
|
||||
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf -y | sh
|
||||
rustup update
|
||||
cargo install --version ${MDBOOK_VERSION} mdbook
|
||||
|
||||
cargo install mdbook@${MDBOOK_VERSION}
|
||||
- name: Setup Pages
|
||||
id: pages
|
||||
uses: actions/configure-pages@v5
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
[toolchain]
|
||||
channel = "1.78"
|
||||
channel = "1.79"
|
||||
components = [
|
||||
"rust-src",
|
||||
"rustc-dev",
|
||||
|
|
|
@ -213,7 +213,7 @@ function makeMutClosure(arg0, arg1, dtor, f) {
|
|||
CLOSURE_DTORS.register(real, state, state);
|
||||
return real;
|
||||
}
|
||||
function __wbg_adapter_22(arg0, arg1, arg2) {
|
||||
function __wbg_adapter_20(arg0, arg1, arg2) {
|
||||
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hb27815019b215f9b(arg0, arg1, addHeapObject(arg2));
|
||||
}
|
||||
|
||||
|
@ -294,7 +294,7 @@ function handleError(f, args) {
|
|||
wasm.__wbindgen_exn_store(addHeapObject(e));
|
||||
}
|
||||
}
|
||||
function __wbg_adapter_117(arg0, arg1, arg2, arg3) {
|
||||
function __wbg_adapter_99(arg0, arg1, arg2, arg3) {
|
||||
wasm.wasm_bindgen__convert__closures__invoke2_mut__h46fcf022e9949c5e(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
|
||||
}
|
||||
|
||||
|
@ -669,6 +669,10 @@ async function __wbg_load(module, imports) {
|
|||
function __wbg_get_imports() {
|
||||
const imports = {};
|
||||
imports.wbg = {};
|
||||
imports.wbg.__wbg_tokenspan_new = function(arg0) {
|
||||
const ret = TokenSpan.__wrap(arg0);
|
||||
return addHeapObject(ret);
|
||||
};
|
||||
imports.wbg.__wbindgen_object_drop_ref = function(arg0) {
|
||||
takeObject(arg0);
|
||||
};
|
||||
|
@ -681,10 +685,6 @@ function __wbg_get_imports() {
|
|||
const ret = false;
|
||||
return ret;
|
||||
};
|
||||
imports.wbg.__wbg_tokenspan_new = function(arg0) {
|
||||
const ret = TokenSpan.__wrap(arg0);
|
||||
return addHeapObject(ret);
|
||||
};
|
||||
imports.wbg.__wbindgen_string_new = function(arg0, arg1) {
|
||||
const ret = getStringFromWasm0(arg0, arg1);
|
||||
return addHeapObject(ret);
|
||||
|
@ -778,41 +778,9 @@ function __wbg_get_imports() {
|
|||
wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);
|
||||
}
|
||||
};
|
||||
imports.wbg.__wbg_instanceof_Window_a2a08d3918d7d4d0 = function(arg0) {
|
||||
let result;
|
||||
try {
|
||||
result = getObject(arg0) instanceof Window;
|
||||
} catch (_) {
|
||||
result = false;
|
||||
}
|
||||
const ret = result;
|
||||
return ret;
|
||||
};
|
||||
imports.wbg.__wbg_document_57dfbea142dce550 = function(arg0) {
|
||||
const ret = getObject(arg0).document;
|
||||
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
||||
};
|
||||
imports.wbg.__wbg_getElementById_fdca7f1415dc3824 = function(arg0, arg1, arg2) {
|
||||
const ret = getObject(arg0).getElementById(getStringFromWasm0(arg1, arg2));
|
||||
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
||||
};
|
||||
imports.wbg.__wbg_setinnerHTML_4e2640423f25caf3 = function(arg0, arg1, arg2) {
|
||||
getObject(arg0).innerHTML = getStringFromWasm0(arg1, arg2);
|
||||
};
|
||||
imports.wbg.__wbg_style_affc67c1e8901162 = function(arg0) {
|
||||
const ret = getObject(arg0).style;
|
||||
return addHeapObject(ret);
|
||||
};
|
||||
imports.wbg.__wbg_log_a55c8bdc4457c57b = function(arg0) {
|
||||
console.log(getObject(arg0));
|
||||
};
|
||||
imports.wbg.__wbg_setProperty_c3d0b0f9bb2f7e45 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {
|
||||
getObject(arg0).setProperty(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));
|
||||
}, arguments) };
|
||||
imports.wbg.__wbg_newnoargs_0c0d88a96558f490 = function(arg0, arg1) {
|
||||
const ret = new Function(getStringFromWasm0(arg0, arg1));
|
||||
return addHeapObject(ret);
|
||||
};
|
||||
imports.wbg.__wbindgen_is_object = function(arg0) {
|
||||
const val = getObject(arg0);
|
||||
const ret = typeof(val) === 'object' && val !== null;
|
||||
|
@ -826,30 +794,6 @@ function __wbg_get_imports() {
|
|||
const ret = getObject(arg0).value;
|
||||
return addHeapObject(ret);
|
||||
};
|
||||
imports.wbg.__wbg_call_90fbab7bd21c618e = function() { return handleError(function (arg0, arg1) {
|
||||
const ret = getObject(arg0).call(getObject(arg1));
|
||||
return addHeapObject(ret);
|
||||
}, arguments) };
|
||||
imports.wbg.__wbg_self_95c25df0896c10fd = function() { return handleError(function () {
|
||||
const ret = self.self;
|
||||
return addHeapObject(ret);
|
||||
}, arguments) };
|
||||
imports.wbg.__wbg_window_f7bac3df0b2770c0 = function() { return handleError(function () {
|
||||
const ret = window.window;
|
||||
return addHeapObject(ret);
|
||||
}, arguments) };
|
||||
imports.wbg.__wbg_globalThis_52d4880a7eac7ac3 = function() { return handleError(function () {
|
||||
const ret = globalThis.globalThis;
|
||||
return addHeapObject(ret);
|
||||
}, arguments) };
|
||||
imports.wbg.__wbg_global_90a45531184ede47 = function() { return handleError(function () {
|
||||
const ret = global.global;
|
||||
return addHeapObject(ret);
|
||||
}, arguments) };
|
||||
imports.wbg.__wbindgen_is_undefined = function(arg0) {
|
||||
const ret = getObject(arg0) === undefined;
|
||||
return ret;
|
||||
};
|
||||
imports.wbg.__wbg_new_ddadd9d04e3295e5 = function(arg0, arg1) {
|
||||
const ret = new Error(getStringFromWasm0(arg0, arg1));
|
||||
return addHeapObject(ret);
|
||||
|
@ -873,7 +817,7 @@ function __wbg_get_imports() {
|
|||
const a = state0.a;
|
||||
state0.a = 0;
|
||||
try {
|
||||
return __wbg_adapter_117(a, state0.b, arg0, arg1);
|
||||
return __wbg_adapter_99(a, state0.b, arg0, arg1);
|
||||
} finally {
|
||||
state0.a = a;
|
||||
}
|
||||
|
@ -939,8 +883,8 @@ function __wbg_get_imports() {
|
|||
const ret = wasm.memory;
|
||||
return addHeapObject(ret);
|
||||
};
|
||||
imports.wbg.__wbindgen_closure_wrapper4486 = function(arg0, arg1, arg2) {
|
||||
const ret = makeMutClosure(arg0, arg1, 1470, __wbg_adapter_22);
|
||||
imports.wbg.__wbindgen_closure_wrapper4384 = function(arg0, arg1, arg2) {
|
||||
const ret = makeMutClosure(arg0, arg1, 1476, __wbg_adapter_20);
|
||||
return addHeapObject(ret);
|
||||
};
|
||||
|
||||
|
|
Binary file not shown.
440
packages/app/dist/index.html
vendored
440
packages/app/dist/index.html
vendored
|
@ -1,65 +1,383 @@
|
|||
<!doctype html><html lang="en" class="dark" dir=""><head><meta charset="UTF-8"><title>Playground</title><meta name="description" content=""><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="theme-color" content="#ffffff"><link rel="shortcut icon" href="taocp.png"><link rel="stylesheet" href="css/variables.css"><link rel="stylesheet" href="css/general.css"><link rel="stylesheet" href="css/chrome.css"><link rel="stylesheet" href="css/print.css" media="print"><link rel="stylesheet" href="FontAwesome/css/font-awesome.css"><link rel="stylesheet" href="fonts/fonts.css"><link rel="stylesheet" href="highlight.css"><link rel="stylesheet" href="tomorrow-night.css"><link rel="stylesheet" href="ayu-highlight.css"><link rel="stylesheet" href="ok.css"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Allura&family=Inclusive+Sans:ital@0;1&display=swap" rel="stylesheet"><script type="module" src="app.bundle.js"></script><script type="module" src="editor.worker.bundle.js"></script></head><body class="sidebar-visible no-js"><div id="body-container"><script>var path_to_root = "";
|
||||
var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "rust" : "dark";</script><script>try {
|
||||
var theme = localStorage.getItem('mdbook-theme');
|
||||
var sidebar = localStorage.getItem('mdbook-sidebar');
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" class="dark" dir="">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>Playground</title>
|
||||
<meta name="description" content="" />
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||||
<meta name="theme-color" content="#ffffff" />
|
||||
<link rel="shortcut icon" href="taocp.png" />
|
||||
<link rel="stylesheet" href="css/variables.css" />
|
||||
<link rel="stylesheet" href="css/general.css" />
|
||||
<link rel="stylesheet" href="css/chrome.css" />
|
||||
<link rel="stylesheet" href="css/print.css" media="print" />
|
||||
<link rel="stylesheet" href="FontAwesome/css/font-awesome.css" />
|
||||
<link rel="stylesheet" href="fonts/fonts.css" />
|
||||
<link rel="stylesheet" href="highlight.css" />
|
||||
<link rel="stylesheet" href="tomorrow-night.css" />
|
||||
<link rel="stylesheet" href="ayu-highlight.css" />
|
||||
<link rel="stylesheet" href="ok.css" />
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Allura&family=Inclusive+Sans:ital@0;1&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<script type="module" src="app.bundle.js"></script>
|
||||
<script type="module" src="editor.worker.bundle.js"></script>
|
||||
</head>
|
||||
<body class="sidebar-visible no-js">
|
||||
<div id="body-container">
|
||||
<script>
|
||||
var path_to_root = "";
|
||||
var default_theme = window.matchMedia("(prefers-color-scheme: dark)")
|
||||
.matches
|
||||
? "rust"
|
||||
: "dark";
|
||||
</script>
|
||||
<script>
|
||||
try {
|
||||
var theme = localStorage.getItem("mdbook-theme");
|
||||
var sidebar = localStorage.getItem("mdbook-sidebar");
|
||||
|
||||
if (theme.startsWith('"') && theme.endsWith('"')) {
|
||||
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
|
||||
}
|
||||
if (theme.startsWith('"') && theme.endsWith('"')) {
|
||||
localStorage.setItem(
|
||||
"mdbook-theme",
|
||||
theme.slice(1, theme.length - 1)
|
||||
);
|
||||
}
|
||||
|
||||
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
|
||||
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
|
||||
}
|
||||
} catch (e) { }</script><script>var theme;
|
||||
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
|
||||
if (theme === null || theme === undefined) { theme = default_theme; }
|
||||
var html = document.querySelector('html');
|
||||
html.classList.remove('dark')
|
||||
html.classList.add(theme);
|
||||
var body = document.querySelector('body');
|
||||
body.classList.remove('no-js')
|
||||
body.classList.add('js');</script><input type="checkbox" id="sidebar-toggle-anchor" class="hidden"><script>var body = document.querySelector('body');
|
||||
var sidebar = null;
|
||||
var sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
|
||||
if (document.body.clientWidth >= 1080) {
|
||||
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
|
||||
sidebar = sidebar || 'visible';
|
||||
} else {
|
||||
sidebar = 'hidden';
|
||||
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
|
||||
localStorage.setItem(
|
||||
"mdbook-sidebar",
|
||||
sidebar.slice(1, sidebar.length - 1)
|
||||
);
|
||||
}
|
||||
} catch (e) {}
|
||||
</script>
|
||||
<script>
|
||||
var theme;
|
||||
try {
|
||||
theme = localStorage.getItem("mdbook-theme");
|
||||
} catch (e) {}
|
||||
if (theme === null || theme === undefined) {
|
||||
theme = default_theme;
|
||||
}
|
||||
var html = document.querySelector("html");
|
||||
html.classList.remove("dark");
|
||||
html.classList.add(theme);
|
||||
var body = document.querySelector("body");
|
||||
body.classList.remove("no-js");
|
||||
body.classList.add("js");
|
||||
</script>
|
||||
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden" />
|
||||
<script>
|
||||
var body = document.querySelector("body");
|
||||
var sidebar = null;
|
||||
var sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
|
||||
if (document.body.clientWidth >= 1080) {
|
||||
try {
|
||||
sidebar = localStorage.getItem("mdbook-sidebar");
|
||||
} catch (e) {}
|
||||
sidebar = sidebar || "visible";
|
||||
} else {
|
||||
sidebar = "hidden";
|
||||
}
|
||||
sidebar_toggle.checked = sidebar === "visible";
|
||||
body.classList.remove("sidebar-visible");
|
||||
body.classList.add("sidebar-" + sidebar);
|
||||
</script>
|
||||
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
|
||||
<div class="sidebar-scrollbox">
|
||||
<ol class="chapter">
|
||||
<li class="chapter-item expanded">
|
||||
<a href="0intro.html"
|
||||
><strong aria-hidden="true">1.</strong> Intro</a
|
||||
>
|
||||
</li>
|
||||
<li class="chapter-item expanded affix"></li>
|
||||
<li class="part-title">Language</li>
|
||||
<li class="chapter-item expanded">
|
||||
<a href="language/0intro.html"
|
||||
><strong aria-hidden="true">2.</strong> Language</a
|
||||
>
|
||||
</li>
|
||||
<li>
|
||||
<ol class="section">
|
||||
<li class="chapter-item expanded">
|
||||
<a href="examples.html"
|
||||
><strong aria-hidden="true">2.1.</strong> Examples</a
|
||||
>
|
||||
</li>
|
||||
</ol>
|
||||
</li>
|
||||
<li class="chapter-item expanded"></li>
|
||||
<li class="part-title">Playground</li>
|
||||
<li class="chapter-item expanded">
|
||||
<a href="playground.html" class="active"
|
||||
><strong aria-hidden="true">3.</strong> Playground</a
|
||||
>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
<div id="sidebar-resize-handle" class="sidebar-resize-handle">
|
||||
<div class="sidebar-resize-indicator"></div>
|
||||
</div>
|
||||
</nav>
|
||||
<script>
|
||||
var sidebarScrollbox = document.querySelector(
|
||||
"#sidebar .sidebar-scrollbox"
|
||||
);
|
||||
sidebarScrollbox.addEventListener(
|
||||
"click",
|
||||
function (e) {
|
||||
if (e.target.tagName === "A") {
|
||||
sessionStorage.setItem(
|
||||
"sidebar-scroll",
|
||||
sidebarScrollbox.scrollTop
|
||||
);
|
||||
}
|
||||
sidebar_toggle.checked = sidebar === 'visible';
|
||||
body.classList.remove('sidebar-visible');
|
||||
body.classList.add("sidebar-" + sidebar);</script><nav id="sidebar" class="sidebar" aria-label="Table of contents"><div class="sidebar-scrollbox"><ol class="chapter"><li class="chapter-item expanded"><a href="0intro.html"><strong aria-hidden="true">1.</strong> Intro</a></li><li class="chapter-item expanded affix"></li><li class="part-title">Language</li><li class="chapter-item expanded"><a href="language/0intro.html"><strong aria-hidden="true">2.</strong> Language</a></li><li><ol class="section"><li class="chapter-item expanded"><a href="examples.html"><strong aria-hidden="true">2.1.</strong> Examples</a></li></ol></li><li class="chapter-item expanded"></li><li class="part-title">Playground</li><li class="chapter-item expanded"><a href="playground.html" class="active"><strong aria-hidden="true">3.</strong> Playground</a></li></ol></div><div id="sidebar-resize-handle" class="sidebar-resize-handle"><div class="sidebar-resize-indicator"></div></div></nav><script>var sidebarScrollbox = document.querySelector('#sidebar .sidebar-scrollbox');
|
||||
sidebarScrollbox.addEventListener('click', function(e) {
|
||||
if (e.target.tagName === 'A') {
|
||||
sessionStorage.setItem('sidebar-scroll', sidebarScrollbox.scrollTop);
|
||||
}
|
||||
}, { passive: true });
|
||||
var sidebarScrollTop = sessionStorage.getItem('sidebar-scroll');
|
||||
sessionStorage.removeItem('sidebar-scroll');
|
||||
if (sidebarScrollTop) {
|
||||
// preserve sidebar scroll position when navigating via links within sidebar
|
||||
sidebarScrollbox.scrollTop = sidebarScrollTop;
|
||||
} else {
|
||||
// scroll sidebar to current active section when navigating via "next/previous chapter" buttons
|
||||
var activeSection = document.querySelector('#sidebar .active');
|
||||
if (activeSection) {
|
||||
activeSection.scrollIntoView({ block: 'center' });
|
||||
}
|
||||
}</script><div id="page-wrapper" class="page-wrapper"><div class="page"><div id="menu-bar-hover-placeholder"></div><div id="menu-bar" class="menu-bar sticky"><div class="left-buttons"><label id="sidebar-toggle" class="nes-btn" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">🍔</label> <button id="theme-toggle" class="nes-btn" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">💅</button><ul id="theme-list" class="is-primary theme-popup" aria-label="Themes" role="menu"><li role="none"><button role="menuitem" class="theme" id="light">Light</button></li><li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li><li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li><li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li><li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li></ul><button id="search-toggle" class="nes-btn is-primary" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">🔎</button></div><h1 class="menu-title"></h1><div class="right-buttons"><a href="print.html" title="Print this book" aria-label="Print this book" class="nes-btn">🖨️ </a><a class="nes-btn" href="https://ok.software/ok/src" title="branch" aria-label="branch">🌿</a></div></div><div id="search-wrapper" class="hidden"><form id="searchbar-outer" class="searchbar-outer"><input type="search" id="searchbar" class="nes-field" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header"></form><div id="searchresults-outer" class="searchresults-outer hidden"><div id="searchresults-header" class="searchresults-header"></div><ul id="searchresults"></ul></div></div><script>document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
|
||||
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
|
||||
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
|
||||
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
|
||||
});</script><div id="content" class="content"><main><div id="container"><div id="cell-editor"><label for="editor">editor</label><div id="editor"></div></div><div id="cell-syntax"><label for="channel-syntax">syntax</label> <textarea id="channel-syntax" autocomplete="off" spellcheck="off" wrap="off" readonly="readonly"></textarea></div><div id="cell-console"><label for="channel-console">console</label> <textarea id="channel-console" autocomplete="off" spellcheck="off" wrap="off" readonly="readonly" rows="3"></textarea></div><div id="cell-client"><label for="channel-client">message trace (client ⇒ server)</label> <textarea id="channel-client" autocomplete="off" spellcheck="off" wrap="off" readonly="readonly" rows="4"></textarea></div><div id="cell-server"><label for="channel-server">message trace (client ⇐ server)</label> <textarea id="channel-server" autocomplete="off" spellcheck="off" wrap="off" readonly="readonly" rows="4"></textarea></div></div></main><nav class="nav-wrapper" aria-label="Page navigation"><a rel="prev" href="examples.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAzElEQVRYR+2X0Q6AIAhF5f8/2jYXZkwEjNSVvVUjDpcrGgT7FUkI2D9xRfQETwNIiWO85wfINfQUEyxBG2ArsLwC0jioGt5zFcwF4OYDPi/mBYKm4t0U8ATgRm3ThFoAqkhNgWkA0jJLvaOVSs7j3qMnSgXWBMiWPXe94QqMBMBc1VZIvaTu5u5pQewq0EqNZvIEMCmxAawK0DNkay9QmfFNAJUXfgGgUkLaE7j/h8fnASkxHTz0DGIBMCnBeeM7AArpUd3mz2x3C7wADglA8BcWMZhZAAAAAElFTkSuQmCC" style="rotate: 270deg; width: 94px"/></a><div style="clear: both"></div></nav></div></div><nav class="nav-wide-wrapper" aria-label="Page navigation"><a rel="next prefetch" href="examples.html" class="nav-chapters previous" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right" style="display: flex; justify-content: middle; align-items: center; width: 50%"><</a></nav></div><script>const wsProtocol = location.protocol === 'https:' ? 'wss:' : 'ws:';
|
||||
const wsAddress = wsProtocol + "//" + location.host + "/" + "__livereload";
|
||||
const socket = new WebSocket(wsAddress);
|
||||
socket.onmessage = function (event) {
|
||||
if (event.data === "reload") {
|
||||
socket.close();
|
||||
location.reload();
|
||||
}
|
||||
};
|
||||
},
|
||||
{ passive: true }
|
||||
);
|
||||
var sidebarScrollTop = sessionStorage.getItem("sidebar-scroll");
|
||||
sessionStorage.removeItem("sidebar-scroll");
|
||||
if (sidebarScrollTop) {
|
||||
// preserve sidebar scroll position when navigating via links within sidebar
|
||||
sidebarScrollbox.scrollTop = sidebarScrollTop;
|
||||
} else {
|
||||
// scroll sidebar to current active section when navigating via "next/previous chapter" buttons
|
||||
var activeSection = document.querySelector("#sidebar .active");
|
||||
if (activeSection) {
|
||||
activeSection.scrollIntoView({ block: "center" });
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<div id="page-wrapper" class="page-wrapper">
|
||||
<div class="page">
|
||||
<div id="menu-bar-hover-placeholder"></div>
|
||||
<div id="menu-bar" class="menu-bar sticky">
|
||||
<div class="left-buttons">
|
||||
<label
|
||||
id="sidebar-toggle"
|
||||
class="nes-btn"
|
||||
for="sidebar-toggle-anchor"
|
||||
title="Toggle Table of Contents"
|
||||
aria-label="Toggle Table of Contents"
|
||||
aria-controls="sidebar"
|
||||
>🍔</label
|
||||
>
|
||||
<button
|
||||
id="theme-toggle"
|
||||
class="nes-btn"
|
||||
type="button"
|
||||
title="Change theme"
|
||||
aria-label="Change theme"
|
||||
aria-haspopup="true"
|
||||
aria-expanded="false"
|
||||
aria-controls="theme-list"
|
||||
>
|
||||
💅
|
||||
</button>
|
||||
<ul
|
||||
id="theme-list"
|
||||
class="is-primary theme-popup"
|
||||
aria-label="Themes"
|
||||
role="menu"
|
||||
>
|
||||
<li role="none">
|
||||
<button role="menuitem" class="theme" id="light">
|
||||
Light
|
||||
</button>
|
||||
</li>
|
||||
<li role="none">
|
||||
<button role="menuitem" class="theme" id="rust">Rust</button>
|
||||
</li>
|
||||
<li role="none">
|
||||
<button role="menuitem" class="theme" id="coal">Coal</button>
|
||||
</li>
|
||||
<li role="none">
|
||||
<button role="menuitem" class="theme" id="navy">Navy</button>
|
||||
</li>
|
||||
<li role="none">
|
||||
<button role="menuitem" class="theme" id="ayu">Ayu</button>
|
||||
</li>
|
||||
</ul>
|
||||
<button
|
||||
id="search-toggle"
|
||||
class="nes-btn is-primary"
|
||||
type="button"
|
||||
title="Search. (Shortkey: s)"
|
||||
aria-label="Toggle Searchbar"
|
||||
aria-expanded="false"
|
||||
aria-keyshortcuts="S"
|
||||
aria-controls="searchbar"
|
||||
>
|
||||
🔎
|
||||
</button>
|
||||
</div>
|
||||
<h1 class="menu-title"></h1>
|
||||
<div class="right-buttons">
|
||||
<a
|
||||
href="print.html"
|
||||
title="Print this book"
|
||||
aria-label="Print this book"
|
||||
class="nes-btn"
|
||||
>🖨️ </a
|
||||
><a
|
||||
class="nes-btn"
|
||||
href="https://ok.software/ok/src"
|
||||
title="branch"
|
||||
aria-label="branch"
|
||||
>🌿</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
<div id="search-wrapper" class="hidden">
|
||||
<form id="searchbar-outer" class="searchbar-outer">
|
||||
<input
|
||||
type="search"
|
||||
id="searchbar"
|
||||
class="nes-field"
|
||||
name="searchbar"
|
||||
placeholder="Search this book ..."
|
||||
aria-controls="searchresults-outer"
|
||||
aria-describedby="searchresults-header"
|
||||
/>
|
||||
</form>
|
||||
<div id="searchresults-outer" class="searchresults-outer hidden">
|
||||
<div id="searchresults-header" class="searchresults-header"></div>
|
||||
<ul id="searchresults"></ul>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
document
|
||||
.getElementById("sidebar-toggle")
|
||||
.setAttribute("aria-expanded", sidebar === "visible");
|
||||
document
|
||||
.getElementById("sidebar")
|
||||
.setAttribute("aria-hidden", sidebar !== "visible");
|
||||
Array.from(document.querySelectorAll("#sidebar a")).forEach(
|
||||
function (link) {
|
||||
link.setAttribute("tabIndex", sidebar === "visible" ? 0 : -1);
|
||||
}
|
||||
);
|
||||
</script>
|
||||
<div id="content" class="content">
|
||||
<main>
|
||||
<div id="container">
|
||||
<div id="cell-editor">
|
||||
<label for="editor">editor</label>
|
||||
<div id="editor"></div>
|
||||
</div>
|
||||
<div id="cell-syntax">
|
||||
<label for="channel-syntax">syntax</label>
|
||||
<textarea
|
||||
id="channel-syntax"
|
||||
autocomplete="off"
|
||||
spellcheck="off"
|
||||
wrap="off"
|
||||
readonly="readonly"
|
||||
></textarea>
|
||||
</div>
|
||||
<div id="cell-console">
|
||||
<label for="channel-console">console</label>
|
||||
<textarea
|
||||
id="channel-console"
|
||||
autocomplete="off"
|
||||
spellcheck="off"
|
||||
wrap="off"
|
||||
readonly="readonly"
|
||||
rows="3"
|
||||
></textarea>
|
||||
</div>
|
||||
<div id="cell-client">
|
||||
<label for="channel-client"
|
||||
>message trace (client ⇒ server)</label
|
||||
>
|
||||
<textarea
|
||||
id="channel-client"
|
||||
autocomplete="off"
|
||||
spellcheck="off"
|
||||
wrap="off"
|
||||
readonly="readonly"
|
||||
rows="4"
|
||||
></textarea>
|
||||
</div>
|
||||
<div id="cell-server">
|
||||
<label for="channel-server"
|
||||
>message trace (client ⇐ server)</label
|
||||
>
|
||||
<textarea
|
||||
id="channel-server"
|
||||
autocomplete="off"
|
||||
spellcheck="off"
|
||||
wrap="off"
|
||||
readonly="readonly"
|
||||
rows="4"
|
||||
></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<nav class="nav-wrapper" aria-label="Page navigation">
|
||||
<a
|
||||
rel="prev"
|
||||
href="examples.html"
|
||||
class="mobile-nav-chapters previous"
|
||||
title="Previous chapter"
|
||||
aria-label="Previous chapter"
|
||||
aria-keyshortcuts="Left"
|
||||
><img
|
||||
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAzElEQVRYR+2X0Q6AIAhF5f8/2jYXZkwEjNSVvVUjDpcrGgT7FUkI2D9xRfQETwNIiWO85wfINfQUEyxBG2ArsLwC0jioGt5zFcwF4OYDPi/mBYKm4t0U8ATgRm3ThFoAqkhNgWkA0jJLvaOVSs7j3qMnSgXWBMiWPXe94QqMBMBc1VZIvaTu5u5pQewq0EqNZvIEMCmxAawK0DNkay9QmfFNAJUXfgGgUkLaE7j/h8fnASkxHTz0DGIBMCnBeeM7AArpUd3mz2x3C7wADglA8BcWMZhZAAAAAElFTkSuQmCC"
|
||||
style="rotate: 270deg; width: 94px"
|
||||
/></a>
|
||||
<div style="clear: both"></div>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
<nav class="nav-wide-wrapper" aria-label="Page navigation">
|
||||
<a
|
||||
rel="next prefetch"
|
||||
href="examples.html"
|
||||
class="nav-chapters previous"
|
||||
title="Next chapter"
|
||||
aria-label="Next chapter"
|
||||
aria-keyshortcuts="Right"
|
||||
style="
|
||||
display: flex;
|
||||
justify-content: middle;
|
||||
align-items: center;
|
||||
width: 50%;
|
||||
"
|
||||
><</a
|
||||
>
|
||||
</nav>
|
||||
</div>
|
||||
<script>
|
||||
const wsProtocol = location.protocol === "https:" ? "wss:" : "ws:";
|
||||
const wsAddress =
|
||||
wsProtocol + "//" + location.host + "/" + "__livereload";
|
||||
const socket = new WebSocket(wsAddress);
|
||||
socket.onmessage = function (event) {
|
||||
if (event.data === "reload") {
|
||||
socket.close();
|
||||
location.reload();
|
||||
}
|
||||
};
|
||||
|
||||
window.onbeforeunload = function() {
|
||||
socket.close();
|
||||
}</script><script>window.playground_copyable = true;</script><script src="elasticlunr.min.js"></script><script src="mark.min.js"></script><script src="searcher.js"></script><script src="clipboard.min.js"></script><script src="highlight.js"></script><script src="book.js"></script></div></body></html>
|
||||
window.onbeforeunload = function () {
|
||||
socket.close();
|
||||
};
|
||||
</script>
|
||||
<script>
|
||||
window.playground_copyable = true;
|
||||
</script>
|
||||
<script src="elasticlunr.min.js"></script>
|
||||
<script src="mark.min.js"></script>
|
||||
<script src="searcher.js"></script>
|
||||
<script src="clipboard.min.js"></script>
|
||||
<script src="highlight.js"></script>
|
||||
<script src="book.js"></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
Loading…
Reference in a new issue