Bring in the Nim implementation.
This commit is contained in:
parent
b05f13fc90
commit
564417c985
|
|
@ -0,0 +1,51 @@
|
||||||
|
# Joy interpreter in Nim
|
||||||
|
|
||||||
|
This interpreter written in Nim is part of the Thun project, which
|
||||||
|
includes interpreters written in Python and Prolog, and some explorations
|
||||||
|
towards compilers for Joy written in Prolog.
|
||||||
|
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
To build an executable just run:
|
||||||
|
|
||||||
|
nim c joy.nim
|
||||||
|
|
||||||
|
To build and immediately run an executable use:
|
||||||
|
|
||||||
|
nim c -r joy.nim
|
||||||
|
|
||||||
|
To build a smaller binary do:
|
||||||
|
|
||||||
|
nim c -d:release joy.nim
|
||||||
|
strip --strip-debug joy.exe
|
||||||
|
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
- Nim functional programming library https://github.com/vegansk/nimfp
|
||||||
|
- Pure Nim (i.e. not GMP) BigInts library https://github.com/def-/nim-bigints
|
||||||
|
- ...
|
||||||
|
|
||||||
|
|
||||||
|
## TODOs:
|
||||||
|
|
||||||
|
- link to other Thun sub-projects & info on Joy in general
|
||||||
|
- ctrl-c should exit cleanly
|
||||||
|
- graphics?
|
||||||
|
- `words` and `help`?
|
||||||
|
- How to integrate docs?
|
||||||
|
|
||||||
|
|
||||||
|
nim cc \
|
||||||
|
-d:release \
|
||||||
|
--stackTrace:off \
|
||||||
|
--lineTrace:off \
|
||||||
|
--checks:off \
|
||||||
|
--assertions:off \
|
||||||
|
--debugger:native \
|
||||||
|
joy.nim
|
||||||
|
|
||||||
|
nim doc --project --index:on --git.url:"https://git.sr.ht/~sforman/Bliss" --git.commit:10b5651ed242fb16c29f2c1f7340d77f65926ca4 --outdir:htmldocs joy.nim
|
||||||
|
|
||||||
|
https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/item/types.nim#L26
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
#[
|
||||||
|
|
||||||
|
Copyright © 2021 Simon Forman
|
||||||
|
|
||||||
|
This file is part of Bliss
|
||||||
|
|
||||||
|
Bliss is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
Bliss is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with Bliss. If not see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
|
]#
|
||||||
|
import streams, strutils, fp, reader, types
|
||||||
|
|
||||||
|
proc add_def(def: string, dictionary: var JoyMapType) =
|
||||||
|
let d = read_str(def)
|
||||||
|
let sym = d.head
|
||||||
|
case sym.kind:
|
||||||
|
of joyAtom:
|
||||||
|
dictionary = dictionary + (sym.atomVal, d.tail)
|
||||||
|
else:
|
||||||
|
raise newException(ValueError, def)
|
||||||
|
|
||||||
|
proc defs_file2dict(defs_filename: string = "defs.txt"): JoyMapType =
|
||||||
|
var strm = newFileStream(defs_filename, fmRead)
|
||||||
|
var dictionary = newMap[string, JoyListType]()
|
||||||
|
var line = ""
|
||||||
|
if not isNil(strm):
|
||||||
|
while strm.readLine(line):
|
||||||
|
if line.isEmptyOrWhitespace:
|
||||||
|
continue
|
||||||
|
add_def(line, dictionary)
|
||||||
|
strm.close()
|
||||||
|
return dictionary
|
||||||
|
|
||||||
|
var dictionary* = defs_file2dict()
|
||||||
|
|
@ -0,0 +1,115 @@
|
||||||
|
-- 1 -
|
||||||
|
? dup bool
|
||||||
|
&& nulco [nullary [false]] dip branch
|
||||||
|
++ 1 +
|
||||||
|
|| nulco [nullary] dip [true] branch
|
||||||
|
!- 0 >=
|
||||||
|
<{} [] swap
|
||||||
|
<<{} [] rolldown
|
||||||
|
abs dup 0 < [] [neg] branch
|
||||||
|
anamorphism [pop []] swap [dip swons] genrec
|
||||||
|
app1 grba infrst
|
||||||
|
app2 [grba swap grba swap] dip [infrst] cons ii
|
||||||
|
app3 3 appN
|
||||||
|
appN [grabN] codi map disenstacken
|
||||||
|
at drop first
|
||||||
|
average [sum] [size] cleave /
|
||||||
|
b [i] dip i
|
||||||
|
binary unary popd
|
||||||
|
ccccons ccons ccons
|
||||||
|
ccons cons cons
|
||||||
|
clear stack bool [pop stack bool] loop
|
||||||
|
cleave fork popdd
|
||||||
|
clop cleave popdd
|
||||||
|
codi cons dip
|
||||||
|
codireco codi reco
|
||||||
|
dinfrirst dip infrst
|
||||||
|
dipd [dip] codi
|
||||||
|
disenstacken ? [uncons ?] loop pop
|
||||||
|
down_to_zero [0 >] [dup --] while
|
||||||
|
drop [rest] times
|
||||||
|
dupd [dup] dip
|
||||||
|
dupdd [dup] dipd
|
||||||
|
dupdip dupd dip
|
||||||
|
dupdipd dup dipd
|
||||||
|
enstacken stack [clear] dip
|
||||||
|
flatten <{} [concat] step
|
||||||
|
fork [i] app2
|
||||||
|
fourth rest third
|
||||||
|
gcd true [tuck mod dup 0 >] loop pop
|
||||||
|
genrec [[genrec] ccccons] nullary swons concat ifte
|
||||||
|
grabN <{} [cons] times
|
||||||
|
grba [stack popd] dip
|
||||||
|
hypot [sqr] ii + sqrt
|
||||||
|
ifte [nullary] dipd swap branch
|
||||||
|
ii [dip] dupdip i
|
||||||
|
infra swons swaack [i] dip swaack
|
||||||
|
infrst infra first
|
||||||
|
make_generator [codireco] ccons
|
||||||
|
mod %
|
||||||
|
neg 0 swap -
|
||||||
|
not [true] [false] branch
|
||||||
|
nulco [nullary] cons
|
||||||
|
nullary [stack] dinfrirst
|
||||||
|
of swap at
|
||||||
|
pam [i] map
|
||||||
|
pm [+] [-] clop
|
||||||
|
popd [pop] dip
|
||||||
|
popdd [pop] dipd
|
||||||
|
popop pop pop
|
||||||
|
popopop pop popop
|
||||||
|
popopd [popop] dip
|
||||||
|
popopdd [popop] dipd
|
||||||
|
product 1 swap [*] step
|
||||||
|
quoted [unit] dip
|
||||||
|
range [0 <=] [1 - dup] anamorphism
|
||||||
|
range_to_zero unit [down_to_zero] infra
|
||||||
|
reco rest cons
|
||||||
|
rest [pop] infra
|
||||||
|
reverse <{} shunt
|
||||||
|
roll> swap swapd
|
||||||
|
roll< swapd swap
|
||||||
|
rollup roll>
|
||||||
|
rolldown roll<
|
||||||
|
rrest rest rest
|
||||||
|
run <{} infra
|
||||||
|
second rest first
|
||||||
|
shift uncons [swons] dip
|
||||||
|
shunt [swons] step
|
||||||
|
size [pop ++] step_zero
|
||||||
|
spiral_next [[[abs] ii <=] [[<>] [pop !-] ||] &&] [[!-] [[++]] [[--]] ifte dip] [[pop !-] [--] [++] ifte] ifte
|
||||||
|
split_at [drop] [take] clop
|
||||||
|
split_list [take reverse] [drop] clop
|
||||||
|
sqr dup *
|
||||||
|
stackd [stack] dip
|
||||||
|
step_zero 0 roll> step
|
||||||
|
sum [+] step_zero
|
||||||
|
swapd [swap] dip
|
||||||
|
swons swap cons
|
||||||
|
swoncat swap concat
|
||||||
|
tailrec [i] genrec
|
||||||
|
take [] roll> [shift] times pop
|
||||||
|
ternary binary popd
|
||||||
|
third rest second
|
||||||
|
tuck dup swapd
|
||||||
|
unary nullary popd
|
||||||
|
uncons [first] [rest] cleave
|
||||||
|
unit [] cons
|
||||||
|
unquoted [i] dip
|
||||||
|
unswons uncons swap
|
||||||
|
while swap nulco dupdipd concat loop
|
||||||
|
x dup i
|
||||||
|
step [_step0] x
|
||||||
|
_step0 _step1 [popopop] [_stept] branch
|
||||||
|
_step1 [?] dipd roll<
|
||||||
|
_stept [uncons] dipd [dupdipd] dip x
|
||||||
|
times [_times0] x
|
||||||
|
_times0 _times1 [popopop] [_timest] branch
|
||||||
|
_times1 [dup 0 >] dipd roll<
|
||||||
|
_timest [[--] dip dupdipd] dip x
|
||||||
|
map [_map0] cons [[] [_map?] [_mape]] dip tailrec
|
||||||
|
_map? pop bool not
|
||||||
|
_mape popd reverse
|
||||||
|
_map0 [_map1] dipd _map2
|
||||||
|
_map1 stackd shift
|
||||||
|
_map2 [infrst] cons dipd roll< swons
|
||||||
|
|
@ -0,0 +1,152 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<!-- This file is generated by Nim. -->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
|
<!-- Favicon -->
|
||||||
|
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
|
||||||
|
|
||||||
|
<!-- Google fonts -->
|
||||||
|
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
|
||||||
|
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
|
||||||
|
|
||||||
|
<!-- CSS -->
|
||||||
|
<title>defs</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="nimdoc.out.css">
|
||||||
|
|
||||||
|
<script type="text/javascript" src="dochack.js"></script>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
function main() {
|
||||||
|
var pragmaDots = document.getElementsByClassName("pragmadots");
|
||||||
|
for (var i = 0; i < pragmaDots.length; i++) {
|
||||||
|
pragmaDots[i].onclick = function(event) {
|
||||||
|
// Hide tease
|
||||||
|
event.target.parentNode.style.display = "none";
|
||||||
|
// Show actual
|
||||||
|
event.target.parentNode.nextElementSibling.style.display = "inline";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
|
||||||
|
function switchTheme(e) {
|
||||||
|
if (e.target.checked) {
|
||||||
|
document.documentElement.setAttribute('data-theme', 'dark');
|
||||||
|
localStorage.setItem('theme', 'dark');
|
||||||
|
} else {
|
||||||
|
document.documentElement.setAttribute('data-theme', 'light');
|
||||||
|
localStorage.setItem('theme', 'light');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
toggleSwitch.addEventListener('change', switchTheme, false);
|
||||||
|
|
||||||
|
const currentTheme = localStorage.getItem('theme') ? localStorage.getItem('theme') : null;
|
||||||
|
if (currentTheme) {
|
||||||
|
document.documentElement.setAttribute('data-theme', currentTheme);
|
||||||
|
|
||||||
|
if (currentTheme === 'dark') {
|
||||||
|
toggleSwitch.checked = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body onload="main()">
|
||||||
|
<div class="document" id="documentId">
|
||||||
|
<div class="container">
|
||||||
|
<h1 class="title">defs</h1>
|
||||||
|
<div class="row">
|
||||||
|
<div class="three columns">
|
||||||
|
<div class="theme-switch-wrapper">
|
||||||
|
<label class="theme-switch" for="checkbox">
|
||||||
|
<input type="checkbox" id="checkbox" />
|
||||||
|
<div class="slider round"></div>
|
||||||
|
</label>
|
||||||
|
<em>Dark Mode</em>
|
||||||
|
</div>
|
||||||
|
<div id="global-links">
|
||||||
|
<ul class="simple">
|
||||||
|
<li>
|
||||||
|
<a href="theindex.html">Index</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div id="searchInputDiv">
|
||||||
|
Search: <input type="text" id="searchInput"
|
||||||
|
onkeyup="search()" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
Group by:
|
||||||
|
<select onchange="groupBy(this.value)">
|
||||||
|
<option value="section">Section</option>
|
||||||
|
<option value="type">Type</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<ul class="simple simple-toc" id="toc-list">
|
||||||
|
<li>
|
||||||
|
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
|
||||||
|
<ul class="simple simple-toc-section">
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="reference reference-toplevel" href="#8" id="58">Vars</a>
|
||||||
|
<ul class="simple simple-toc-section">
|
||||||
|
<li><a class="reference" href="#dictionary"
|
||||||
|
title="dictionary = defs_file2dict("defs.txt")">dictionary</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="nine columns" id="content">
|
||||||
|
<div id="tocRoot"></div>
|
||||||
|
|
||||||
|
<p class="module-desc"></p>
|
||||||
|
<div class="section" id="6">
|
||||||
|
<h1><a class="toc-backref" href="#6">Imports</a></h1>
|
||||||
|
<dl class="item">
|
||||||
|
<a class="reference external" href="reader.html">reader</a>, <a class="reference external" href="types.html">types</a>
|
||||||
|
</dl></div>
|
||||||
|
<div class="section" id="8">
|
||||||
|
<h1><a class="toc-backref" href="#8">Vars</a></h1>
|
||||||
|
<dl class="item">
|
||||||
|
<a id="dictionary"></a>
|
||||||
|
<dt><pre><a href="defs.html#dictionary"><span class="Identifier">dictionary</span></a> <span class="Other">=</span> <span class="Identifier">defs_file2dict</span><span class="Other">(</span><span class="StringLit">"defs.txt"</span><span class="Other">)</span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/defs.nim#L45"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/defs.nim#L45" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
|
||||||
|
</dl></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="twelve-columns footer">
|
||||||
|
<span class="nim-sprite"></span>
|
||||||
|
<br/>
|
||||||
|
<small style="color: var(--hint);">Made with Nim. Generated: 2021-02-20 03:26:16 UTC</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
dictionary defs.html#dictionary defs: dictionary
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,128 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<!-- This file is generated by Nim. -->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
|
<!-- Favicon -->
|
||||||
|
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
|
||||||
|
|
||||||
|
<!-- Google fonts -->
|
||||||
|
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
|
||||||
|
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
|
||||||
|
|
||||||
|
<!-- CSS -->
|
||||||
|
<title>joy</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="nimdoc.out.css">
|
||||||
|
|
||||||
|
<script type="text/javascript" src="dochack.js"></script>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
function main() {
|
||||||
|
var pragmaDots = document.getElementsByClassName("pragmadots");
|
||||||
|
for (var i = 0; i < pragmaDots.length; i++) {
|
||||||
|
pragmaDots[i].onclick = function(event) {
|
||||||
|
// Hide tease
|
||||||
|
event.target.parentNode.style.display = "none";
|
||||||
|
// Show actual
|
||||||
|
event.target.parentNode.nextElementSibling.style.display = "inline";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
|
||||||
|
function switchTheme(e) {
|
||||||
|
if (e.target.checked) {
|
||||||
|
document.documentElement.setAttribute('data-theme', 'dark');
|
||||||
|
localStorage.setItem('theme', 'dark');
|
||||||
|
} else {
|
||||||
|
document.documentElement.setAttribute('data-theme', 'light');
|
||||||
|
localStorage.setItem('theme', 'light');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
toggleSwitch.addEventListener('change', switchTheme, false);
|
||||||
|
|
||||||
|
const currentTheme = localStorage.getItem('theme') ? localStorage.getItem('theme') : null;
|
||||||
|
if (currentTheme) {
|
||||||
|
document.documentElement.setAttribute('data-theme', currentTheme);
|
||||||
|
|
||||||
|
if (currentTheme === 'dark') {
|
||||||
|
toggleSwitch.checked = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body onload="main()">
|
||||||
|
<div class="document" id="documentId">
|
||||||
|
<div class="container">
|
||||||
|
<h1 class="title">joy</h1>
|
||||||
|
<div class="row">
|
||||||
|
<div class="three columns">
|
||||||
|
<div class="theme-switch-wrapper">
|
||||||
|
<label class="theme-switch" for="checkbox">
|
||||||
|
<input type="checkbox" id="checkbox" />
|
||||||
|
<div class="slider round"></div>
|
||||||
|
</label>
|
||||||
|
<em>Dark Mode</em>
|
||||||
|
</div>
|
||||||
|
<div id="global-links">
|
||||||
|
<ul class="simple">
|
||||||
|
<li>
|
||||||
|
<a href="theindex.html">Index</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div id="searchInputDiv">
|
||||||
|
Search: <input type="text" id="searchInput"
|
||||||
|
onkeyup="search()" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
Group by:
|
||||||
|
<select onchange="groupBy(this.value)">
|
||||||
|
<option value="section">Section</option>
|
||||||
|
<option value="type">Type</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<ul class="simple simple-toc" id="toc-list">
|
||||||
|
<li>
|
||||||
|
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
|
||||||
|
<ul class="simple simple-toc-section">
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="nine columns" id="content">
|
||||||
|
<div id="tocRoot"></div>
|
||||||
|
|
||||||
|
<p class="module-desc"></p>
|
||||||
|
<div class="section" id="6">
|
||||||
|
<h1><a class="toc-backref" href="#6">Imports</a></h1>
|
||||||
|
<dl class="item">
|
||||||
|
<a class="reference external" href="printer.html">printer</a>, <a class="reference external" href="reader.html">reader</a>, <a class="reference external" href="types.html">types</a>, <a class="reference external" href="joylib.html">joylib</a>, <a class="reference external" href="utils.html">utils</a>, <a class="reference external" href="defs.html">defs</a>
|
||||||
|
</dl></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="twelve-columns footer">
|
||||||
|
<span class="nim-sprite"></span>
|
||||||
|
<br/>
|
||||||
|
<small style="color: var(--hint);">Made with Nim. Generated: 2021-02-20 03:26:16 UTC</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,379 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<!-- This file is generated by Nim. -->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
|
<!-- Favicon -->
|
||||||
|
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
|
||||||
|
|
||||||
|
<!-- Google fonts -->
|
||||||
|
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
|
||||||
|
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
|
||||||
|
|
||||||
|
<!-- CSS -->
|
||||||
|
<title>joylib</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="nimdoc.out.css">
|
||||||
|
|
||||||
|
<script type="text/javascript" src="dochack.js"></script>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
function main() {
|
||||||
|
var pragmaDots = document.getElementsByClassName("pragmadots");
|
||||||
|
for (var i = 0; i < pragmaDots.length; i++) {
|
||||||
|
pragmaDots[i].onclick = function(event) {
|
||||||
|
// Hide tease
|
||||||
|
event.target.parentNode.style.display = "none";
|
||||||
|
// Show actual
|
||||||
|
event.target.parentNode.nextElementSibling.style.display = "inline";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
|
||||||
|
function switchTheme(e) {
|
||||||
|
if (e.target.checked) {
|
||||||
|
document.documentElement.setAttribute('data-theme', 'dark');
|
||||||
|
localStorage.setItem('theme', 'dark');
|
||||||
|
} else {
|
||||||
|
document.documentElement.setAttribute('data-theme', 'light');
|
||||||
|
localStorage.setItem('theme', 'light');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
toggleSwitch.addEventListener('change', switchTheme, false);
|
||||||
|
|
||||||
|
const currentTheme = localStorage.getItem('theme') ? localStorage.getItem('theme') : null;
|
||||||
|
if (currentTheme) {
|
||||||
|
document.documentElement.setAttribute('data-theme', currentTheme);
|
||||||
|
|
||||||
|
if (currentTheme === 'dark') {
|
||||||
|
toggleSwitch.checked = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body onload="main()">
|
||||||
|
<div class="document" id="documentId">
|
||||||
|
<div class="container">
|
||||||
|
<h1 class="title">joylib</h1>
|
||||||
|
<div class="row">
|
||||||
|
<div class="three columns">
|
||||||
|
<div class="theme-switch-wrapper">
|
||||||
|
<label class="theme-switch" for="checkbox">
|
||||||
|
<input type="checkbox" id="checkbox" />
|
||||||
|
<div class="slider round"></div>
|
||||||
|
</label>
|
||||||
|
<em>Dark Mode</em>
|
||||||
|
</div>
|
||||||
|
<div id="global-links">
|
||||||
|
<ul class="simple">
|
||||||
|
<li>
|
||||||
|
<a href="theindex.html">Index</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div id="searchInputDiv">
|
||||||
|
Search: <input type="text" id="searchInput"
|
||||||
|
onkeyup="search()" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
Group by:
|
||||||
|
<select onchange="groupBy(this.value)">
|
||||||
|
<option value="section">Section</option>
|
||||||
|
<option value="type">Type</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<ul class="simple simple-toc" id="toc-list">
|
||||||
|
<li>
|
||||||
|
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
|
||||||
|
<ul class="simple simple-toc-section">
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="reference reference-toplevel" href="#12" id="62">Procs</a>
|
||||||
|
<ul class="simple simple-toc-section">
|
||||||
|
<ul class="simple nested-toc-section">cons
|
||||||
|
<li><a class="reference" href="#cons%2CJoyState"
|
||||||
|
title="cons(state: var JoyState)">cons,<wbr>JoyState</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="simple nested-toc-section">dip
|
||||||
|
<li><a class="reference" href="#dip%2CJoyState"
|
||||||
|
title="dip(state: var JoyState)">dip,<wbr>JoyState</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="simple nested-toc-section">stack
|
||||||
|
<li><a class="reference" href="#stack%2CJoyState"
|
||||||
|
title="stack(state: var JoyState)">stack,<wbr>JoyState</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="simple nested-toc-section">first
|
||||||
|
<li><a class="reference" href="#first%2CJoyState"
|
||||||
|
title="first(state: var JoyState)">first,<wbr>JoyState</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="simple nested-toc-section">swap
|
||||||
|
<li><a class="reference" href="#swap%2CJoyState"
|
||||||
|
title="swap(state: var JoyState)">swap,<wbr>JoyState</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="simple nested-toc-section">dup
|
||||||
|
<li><a class="reference" href="#dup%2CJoyState"
|
||||||
|
title="dup(state: var JoyState)">dup,<wbr>JoyState</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="simple nested-toc-section">swaack
|
||||||
|
<li><a class="reference" href="#swaack%2CJoyState"
|
||||||
|
title="swaack(state: var JoyState)">swaack,<wbr>JoyState</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="simple nested-toc-section">concat
|
||||||
|
<li><a class="reference" href="#concat%2CJoyState"
|
||||||
|
title="concat(state: var JoyState)">concat,<wbr>JoyState</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="simple nested-toc-section">i
|
||||||
|
<li><a class="reference" href="#i%2CJoyState"
|
||||||
|
title="i(state: var JoyState)">i,<wbr>JoyState</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="simple nested-toc-section">clear
|
||||||
|
<li><a class="reference" href="#clear%2CJoyState"
|
||||||
|
title="clear(state: var JoyState)">clear,<wbr>JoyState</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="simple nested-toc-section">loop
|
||||||
|
<li><a class="reference" href="#loop%2CJoyState"
|
||||||
|
title="loop(state: var JoyState)">loop,<wbr>JoyState</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="simple nested-toc-section">branch
|
||||||
|
<li><a class="reference" href="#branch%2CJoyState"
|
||||||
|
title="branch(state: var JoyState)">branch,<wbr>JoyState</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="simple nested-toc-section">rest
|
||||||
|
<li><a class="reference" href="#rest%2CJoyState"
|
||||||
|
title="rest(state: var JoyState)">rest,<wbr>JoyState</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="simple nested-toc-section">truthy
|
||||||
|
<li><a class="reference" href="#truthy%2CJoyState"
|
||||||
|
title="truthy(state: var JoyState)">truthy,<wbr>JoyState</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="simple nested-toc-section">pop
|
||||||
|
<li><a class="reference" href="#pop%2CJoyState"
|
||||||
|
title="pop(state: var JoyState)">pop,<wbr>JoyState</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="nine columns" id="content">
|
||||||
|
<div id="tocRoot"></div>
|
||||||
|
|
||||||
|
<p class="module-desc"></p>
|
||||||
|
<div class="section" id="6">
|
||||||
|
<h1><a class="toc-backref" href="#6">Imports</a></h1>
|
||||||
|
<dl class="item">
|
||||||
|
<a class="reference external" href="types.html">types</a>, <a class="reference external" href="utils.html">utils</a>
|
||||||
|
</dl></div>
|
||||||
|
<div class="section" id="12">
|
||||||
|
<h1><a class="toc-backref" href="#12">Procs</a></h1>
|
||||||
|
<dl class="item">
|
||||||
|
<a id="swap,JoyState"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#swap%2CJoyState"><span class="Identifier">swap</span></a><span class="Other">(</span><span class="Identifier">state</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="types.html#JoyState"><span class="Identifier">JoyState</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/joylib.nim#L24"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/joylib.nim#L24" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="dup,JoyState"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#dup%2CJoyState"><span class="Identifier">dup</span></a><span class="Other">(</span><span class="Identifier">state</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="types.html#JoyState"><span class="Identifier">JoyState</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/joylib.nim#L29"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/joylib.nim#L29" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="pop,JoyState"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#pop%2CJoyState"><span class="Identifier">pop</span></a><span class="Other">(</span><span class="Identifier">state</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="types.html#JoyState"><span class="Identifier">JoyState</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/joylib.nim#L34"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/joylib.nim#L34" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="cons,JoyState"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#cons%2CJoyState"><span class="Identifier">cons</span></a><span class="Other">(</span><span class="Identifier">state</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="types.html#JoyState"><span class="Identifier">JoyState</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/joylib.nim#L39"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/joylib.nim#L39" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="concat,JoyState"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#concat%2CJoyState"><span class="Identifier">concat</span></a><span class="Other">(</span><span class="Identifier">state</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="types.html#JoyState"><span class="Identifier">JoyState</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/joylib.nim#L44"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/joylib.nim#L44" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="stack,JoyState"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#stack%2CJoyState"><span class="Identifier">stack</span></a><span class="Other">(</span><span class="Identifier">state</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="types.html#JoyState"><span class="Identifier">JoyState</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/joylib.nim#L49"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/joylib.nim#L49" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="swaack,JoyState"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#swaack%2CJoyState"><span class="Identifier">swaack</span></a><span class="Other">(</span><span class="Identifier">state</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="types.html#JoyState"><span class="Identifier">JoyState</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/joylib.nim#L52"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/joylib.nim#L52" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="clear,JoyState"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#clear%2CJoyState"><span class="Identifier">clear</span></a><span class="Other">(</span><span class="Identifier">state</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="types.html#JoyState"><span class="Identifier">JoyState</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/joylib.nim#L58"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/joylib.nim#L58" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="first,JoyState"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#first%2CJoyState"><span class="Identifier">first</span></a><span class="Other">(</span><span class="Identifier">state</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="types.html#JoyState"><span class="Identifier">JoyState</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/joylib.nim#L61"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/joylib.nim#L61" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="rest,JoyState"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#rest%2CJoyState"><span class="Identifier">rest</span></a><span class="Other">(</span><span class="Identifier">state</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="types.html#JoyState"><span class="Identifier">JoyState</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/joylib.nim#L67"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/joylib.nim#L67" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="branch,JoyState"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#branch%2CJoyState"><span class="Identifier">branch</span></a><span class="Other">(</span><span class="Identifier">state</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="types.html#JoyState"><span class="Identifier">JoyState</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/joylib.nim#L73"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/joylib.nim#L73" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="loop,JoyState"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#loop%2CJoyState"><span class="Identifier">loop</span></a><span class="Other">(</span><span class="Identifier">state</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="types.html#JoyState"><span class="Identifier">JoyState</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/joylib.nim#L81"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/joylib.nim#L81" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="i,JoyState"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#i%2CJoyState"><span class="Identifier">i</span></a><span class="Other">(</span><span class="Identifier">state</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="types.html#JoyState"><span class="Identifier">JoyState</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/joylib.nim#L90"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/joylib.nim#L90" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="dip,JoyState"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#dip%2CJoyState"><span class="Identifier">dip</span></a><span class="Other">(</span><span class="Identifier">state</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="types.html#JoyState"><span class="Identifier">JoyState</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/joylib.nim#L94"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/joylib.nim#L94" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="truthy,JoyState"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#truthy%2CJoyState"><span class="Identifier">truthy</span></a><span class="Other">(</span><span class="Identifier">state</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="types.html#JoyState"><span class="Identifier">JoyState</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/joylib.nim#L99"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/joylib.nim#L99" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
|
||||||
|
</dl></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="twelve-columns footer">
|
||||||
|
<span class="nim-sprite"></span>
|
||||||
|
<br/>
|
||||||
|
<small style="color: var(--hint);">Made with Nim. Generated: 2021-02-20 03:26:16 UTC</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
swap joylib.html#swap,JoyState joylib: swap(state: var JoyState)
|
||||||
|
dup joylib.html#dup,JoyState joylib: dup(state: var JoyState)
|
||||||
|
pop joylib.html#pop,JoyState joylib: pop(state: var JoyState)
|
||||||
|
cons joylib.html#cons,JoyState joylib: cons(state: var JoyState)
|
||||||
|
concat joylib.html#concat,JoyState joylib: concat(state: var JoyState)
|
||||||
|
stack joylib.html#stack,JoyState joylib: stack(state: var JoyState)
|
||||||
|
swaack joylib.html#swaack,JoyState joylib: swaack(state: var JoyState)
|
||||||
|
clear joylib.html#clear,JoyState joylib: clear(state: var JoyState)
|
||||||
|
first joylib.html#first,JoyState joylib: first(state: var JoyState)
|
||||||
|
rest joylib.html#rest,JoyState joylib: rest(state: var JoyState)
|
||||||
|
branch joylib.html#branch,JoyState joylib: branch(state: var JoyState)
|
||||||
|
loop joylib.html#loop,JoyState joylib: loop(state: var JoyState)
|
||||||
|
i joylib.html#i,JoyState joylib: i(state: var JoyState)
|
||||||
|
dip joylib.html#dip,JoyState joylib: dip(state: var JoyState)
|
||||||
|
truthy joylib.html#truthy,JoyState joylib: truthy(state: var JoyState)
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,173 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<!-- This file is generated by Nim. -->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
|
<!-- Favicon -->
|
||||||
|
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
|
||||||
|
|
||||||
|
<!-- Google fonts -->
|
||||||
|
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
|
||||||
|
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
|
||||||
|
|
||||||
|
<!-- CSS -->
|
||||||
|
<title>printer</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="nimdoc.out.css">
|
||||||
|
|
||||||
|
<script type="text/javascript" src="dochack.js"></script>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
function main() {
|
||||||
|
var pragmaDots = document.getElementsByClassName("pragmadots");
|
||||||
|
for (var i = 0; i < pragmaDots.length; i++) {
|
||||||
|
pragmaDots[i].onclick = function(event) {
|
||||||
|
// Hide tease
|
||||||
|
event.target.parentNode.style.display = "none";
|
||||||
|
// Show actual
|
||||||
|
event.target.parentNode.nextElementSibling.style.display = "inline";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
|
||||||
|
function switchTheme(e) {
|
||||||
|
if (e.target.checked) {
|
||||||
|
document.documentElement.setAttribute('data-theme', 'dark');
|
||||||
|
localStorage.setItem('theme', 'dark');
|
||||||
|
} else {
|
||||||
|
document.documentElement.setAttribute('data-theme', 'light');
|
||||||
|
localStorage.setItem('theme', 'light');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
toggleSwitch.addEventListener('change', switchTheme, false);
|
||||||
|
|
||||||
|
const currentTheme = localStorage.getItem('theme') ? localStorage.getItem('theme') : null;
|
||||||
|
if (currentTheme) {
|
||||||
|
document.documentElement.setAttribute('data-theme', currentTheme);
|
||||||
|
|
||||||
|
if (currentTheme === 'dark') {
|
||||||
|
toggleSwitch.checked = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body onload="main()">
|
||||||
|
<div class="document" id="documentId">
|
||||||
|
<div class="container">
|
||||||
|
<h1 class="title">printer</h1>
|
||||||
|
<div class="row">
|
||||||
|
<div class="three columns">
|
||||||
|
<div class="theme-switch-wrapper">
|
||||||
|
<label class="theme-switch" for="checkbox">
|
||||||
|
<input type="checkbox" id="checkbox" />
|
||||||
|
<div class="slider round"></div>
|
||||||
|
</label>
|
||||||
|
<em>Dark Mode</em>
|
||||||
|
</div>
|
||||||
|
<div id="global-links">
|
||||||
|
<ul class="simple">
|
||||||
|
<li>
|
||||||
|
<a href="theindex.html">Index</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div id="searchInputDiv">
|
||||||
|
Search: <input type="text" id="searchInput"
|
||||||
|
onkeyup="search()" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
Group by:
|
||||||
|
<select onchange="groupBy(this.value)">
|
||||||
|
<option value="section">Section</option>
|
||||||
|
<option value="type">Type</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<ul class="simple simple-toc" id="toc-list">
|
||||||
|
<li>
|
||||||
|
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
|
||||||
|
<ul class="simple simple-toc-section">
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="reference reference-toplevel" href="#12" id="62">Procs</a>
|
||||||
|
<ul class="simple simple-toc-section">
|
||||||
|
<ul class="simple nested-toc-section">print_stack
|
||||||
|
<li><a class="reference" href="#print_stack%2CJoyListType"
|
||||||
|
title="print_stack(stack: JoyListType): string">print_stack,<wbr>JoyListType</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="simple nested-toc-section">print_expression
|
||||||
|
<li><a class="reference" href="#print_expression%2CJoyListType"
|
||||||
|
title="print_expression(stack: JoyListType): string">print_expression,<wbr>JoyListType</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="nine columns" id="content">
|
||||||
|
<div id="tocRoot"></div>
|
||||||
|
|
||||||
|
<p class="module-desc"></p>
|
||||||
|
<div class="section" id="6">
|
||||||
|
<h1><a class="toc-backref" href="#6">Imports</a></h1>
|
||||||
|
<dl class="item">
|
||||||
|
<a class="reference external" href="types.html">types</a>
|
||||||
|
</dl></div>
|
||||||
|
<div class="section" id="12">
|
||||||
|
<h1><a class="toc-backref" href="#12">Procs</a></h1>
|
||||||
|
<dl class="item">
|
||||||
|
<a id="print_expression,JoyListType"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#print_expression%2CJoyListType"><span class="Identifier">print_expression</span></a><span class="Other">(</span><span class="Identifier">stack</span><span class="Other">:</span> <a href="types.html#JoyListType"><span class="Identifier">JoyListType</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span>
|
||||||
|
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/printer.nim#L38"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/printer.nim#L38" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="print_stack,JoyListType"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#print_stack%2CJoyListType"><span class="Identifier">print_stack</span></a><span class="Other">(</span><span class="Identifier">stack</span><span class="Other">:</span> <a href="types.html#JoyListType"><span class="Identifier">JoyListType</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span>
|
||||||
|
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/printer.nim#L41"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/printer.nim#L41" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
|
||||||
|
</dl></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="twelve-columns footer">
|
||||||
|
<span class="nim-sprite"></span>
|
||||||
|
<br/>
|
||||||
|
<small style="color: var(--hint);">Made with Nim. Generated: 2021-02-20 03:26:16 UTC</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
print_expression printer.html#print_expression,JoyListType printer: print_expression(stack: JoyListType): string
|
||||||
|
print_stack printer.html#print_stack,JoyListType printer: print_stack(stack: JoyListType): string
|
||||||
|
|
@ -0,0 +1,156 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<!-- This file is generated by Nim. -->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
|
<!-- Favicon -->
|
||||||
|
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
|
||||||
|
|
||||||
|
<!-- Google fonts -->
|
||||||
|
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
|
||||||
|
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
|
||||||
|
|
||||||
|
<!-- CSS -->
|
||||||
|
<title>reader</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="nimdoc.out.css">
|
||||||
|
|
||||||
|
<script type="text/javascript" src="dochack.js"></script>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
function main() {
|
||||||
|
var pragmaDots = document.getElementsByClassName("pragmadots");
|
||||||
|
for (var i = 0; i < pragmaDots.length; i++) {
|
||||||
|
pragmaDots[i].onclick = function(event) {
|
||||||
|
// Hide tease
|
||||||
|
event.target.parentNode.style.display = "none";
|
||||||
|
// Show actual
|
||||||
|
event.target.parentNode.nextElementSibling.style.display = "inline";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
|
||||||
|
function switchTheme(e) {
|
||||||
|
if (e.target.checked) {
|
||||||
|
document.documentElement.setAttribute('data-theme', 'dark');
|
||||||
|
localStorage.setItem('theme', 'dark');
|
||||||
|
} else {
|
||||||
|
document.documentElement.setAttribute('data-theme', 'light');
|
||||||
|
localStorage.setItem('theme', 'light');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
toggleSwitch.addEventListener('change', switchTheme, false);
|
||||||
|
|
||||||
|
const currentTheme = localStorage.getItem('theme') ? localStorage.getItem('theme') : null;
|
||||||
|
if (currentTheme) {
|
||||||
|
document.documentElement.setAttribute('data-theme', currentTheme);
|
||||||
|
|
||||||
|
if (currentTheme === 'dark') {
|
||||||
|
toggleSwitch.checked = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body onload="main()">
|
||||||
|
<div class="document" id="documentId">
|
||||||
|
<div class="container">
|
||||||
|
<h1 class="title">reader</h1>
|
||||||
|
<div class="row">
|
||||||
|
<div class="three columns">
|
||||||
|
<div class="theme-switch-wrapper">
|
||||||
|
<label class="theme-switch" for="checkbox">
|
||||||
|
<input type="checkbox" id="checkbox" />
|
||||||
|
<div class="slider round"></div>
|
||||||
|
</label>
|
||||||
|
<em>Dark Mode</em>
|
||||||
|
</div>
|
||||||
|
<div id="global-links">
|
||||||
|
<ul class="simple">
|
||||||
|
<li>
|
||||||
|
<a href="theindex.html">Index</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div id="searchInputDiv">
|
||||||
|
Search: <input type="text" id="searchInput"
|
||||||
|
onkeyup="search()" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
Group by:
|
||||||
|
<select onchange="groupBy(this.value)">
|
||||||
|
<option value="section">Section</option>
|
||||||
|
<option value="type">Type</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<ul class="simple simple-toc" id="toc-list">
|
||||||
|
<li>
|
||||||
|
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
|
||||||
|
<ul class="simple simple-toc-section">
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="reference reference-toplevel" href="#12" id="62">Procs</a>
|
||||||
|
<ul class="simple simple-toc-section">
|
||||||
|
<ul class="simple nested-toc-section">read_str
|
||||||
|
<li><a class="reference" href="#read_str%2Cstring"
|
||||||
|
title="read_str(str: string): JoyListType">read_str,<wbr>string</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="nine columns" id="content">
|
||||||
|
<div id="tocRoot"></div>
|
||||||
|
|
||||||
|
<p class="module-desc"></p>
|
||||||
|
<div class="section" id="6">
|
||||||
|
<h1><a class="toc-backref" href="#6">Imports</a></h1>
|
||||||
|
<dl class="item">
|
||||||
|
<a class="reference external" href="types.html">types</a>
|
||||||
|
</dl></div>
|
||||||
|
<div class="section" id="12">
|
||||||
|
<h1><a class="toc-backref" href="#12">Procs</a></h1>
|
||||||
|
<dl class="item">
|
||||||
|
<a id="read_str,string"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#read_str%2Cstring"><span class="Identifier">read_str</span></a><span class="Other">(</span><span class="Identifier">str</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="types.html#JoyListType"><span class="Identifier">JoyListType</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma">
|
||||||
|
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">EInvalidPeg</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/reader.nim#L99"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/reader.nim#L99" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
|
||||||
|
</dl></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="twelve-columns footer">
|
||||||
|
<span class="nim-sprite"></span>
|
||||||
|
<br/>
|
||||||
|
<small style="color: var(--hint);">Made with Nim. Generated: 2021-02-20 03:26:16 UTC</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
read_str reader.html#read_str,string reader: read_str(str: string): JoyListType
|
||||||
|
|
@ -0,0 +1,239 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<!-- This file is generated by Nim. -->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
|
<!-- Favicon -->
|
||||||
|
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
|
||||||
|
|
||||||
|
<!-- Google fonts -->
|
||||||
|
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
|
||||||
|
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
|
||||||
|
|
||||||
|
<!-- CSS -->
|
||||||
|
<title>Index</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="nimdoc.out.css">
|
||||||
|
|
||||||
|
<script type="text/javascript" src="dochack.js"></script>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
function main() {
|
||||||
|
var pragmaDots = document.getElementsByClassName("pragmadots");
|
||||||
|
for (var i = 0; i < pragmaDots.length; i++) {
|
||||||
|
pragmaDots[i].onclick = function(event) {
|
||||||
|
// Hide tease
|
||||||
|
event.target.parentNode.style.display = "none";
|
||||||
|
// Show actual
|
||||||
|
event.target.parentNode.nextElementSibling.style.display = "inline";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
|
||||||
|
function switchTheme(e) {
|
||||||
|
if (e.target.checked) {
|
||||||
|
document.documentElement.setAttribute('data-theme', 'dark');
|
||||||
|
localStorage.setItem('theme', 'dark');
|
||||||
|
} else {
|
||||||
|
document.documentElement.setAttribute('data-theme', 'light');
|
||||||
|
localStorage.setItem('theme', 'light');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
toggleSwitch.addEventListener('change', switchTheme, false);
|
||||||
|
|
||||||
|
const currentTheme = localStorage.getItem('theme') ? localStorage.getItem('theme') : null;
|
||||||
|
if (currentTheme) {
|
||||||
|
document.documentElement.setAttribute('data-theme', currentTheme);
|
||||||
|
|
||||||
|
if (currentTheme === 'dark') {
|
||||||
|
toggleSwitch.checked = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body onload="main()">
|
||||||
|
<div class="document" id="documentId">
|
||||||
|
<div class="container">
|
||||||
|
<h1 class="title">Index</h1>
|
||||||
|
Modules: <a href="defs.html">defs</a>, <a href="joylib.html">joylib</a>, <a href="printer.html">printer</a>, <a href="reader.html">reader</a>, <a href="types.html">types</a>, <a href="utils.html">utils</a>.<br/><p /><h2>API symbols</h2>
|
||||||
|
<dl><dt><a name="branch" href="#branch"><span>branch:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="joylib: branch(state: var JoyState)" href="joylib.html#branch%2CJoyState">joylib: branch(state: var JoyState)</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="clear" href="#clear"><span>clear:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="joylib: clear(state: var JoyState)" href="joylib.html#clear%2CJoyState">joylib: clear(state: var JoyState)</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="concat" href="#concat"><span>concat:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="joylib: concat(state: var JoyState)" href="joylib.html#concat%2CJoyState">joylib: concat(state: var JoyState)</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="cons" href="#cons"><span>cons:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="joylib: cons(state: var JoyState)" href="joylib.html#cons%2CJoyState">joylib: cons(state: var JoyState)</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="dictionary" href="#dictionary"><span>dictionary:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="defs: dictionary" href="defs.html#dictionary">defs: dictionary</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="dip" href="#dip"><span>dip:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="joylib: dip(state: var JoyState)" href="joylib.html#dip%2CJoyState">joylib: dip(state: var JoyState)</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="dup" href="#dup"><span>dup:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="joylib: dup(state: var JoyState)" href="joylib.html#dup%2CJoyState">joylib: dup(state: var JoyState)</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="first" href="#first"><span>first:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="joylib: first(state: var JoyState)" href="joylib.html#first%2CJoyState">joylib: first(state: var JoyState)</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="i" href="#i"><span>i:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="joylib: i(state: var JoyState)" href="joylib.html#i%2CJoyState">joylib: i(state: var JoyState)</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="j_false" href="#j_false"><span>j_false:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="types: j_false" href="types.html#j_false">types: j_false</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="j_loop" href="#j_loop"><span>j_loop:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="types: j_loop" href="types.html#j_loop">types: j_loop</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="joyAtom" href="#joyAtom"><span>joyAtom:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="JoyTypeType.joyAtom" href="types.html#joyAtom">JoyTypeType.joyAtom</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="joyFalse" href="#joyFalse"><span>joyFalse:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="JoyTypeType.joyFalse" href="types.html#joyFalse">JoyTypeType.joyFalse</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="joyInt" href="#joyInt"><span>joyInt:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="JoyTypeType.joyInt" href="types.html#joyInt">JoyTypeType.joyInt</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="joyList" href="#joyList"><span>joyList:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="JoyTypeType.joyList" href="types.html#joyList">JoyTypeType.joyList</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="JoyListType" href="#JoyListType"><span>JoyListType:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="types: JoyListType" href="types.html#JoyListType">types: JoyListType</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="JoyMapType" href="#JoyMapType"><span>JoyMapType:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="types: JoyMapType" href="types.html#JoyMapType">types: JoyMapType</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="joyParseError" href="#joyParseError"><span>joyParseError:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="JoyTypeType.joyParseError" href="types.html#joyParseError">JoyTypeType.joyParseError</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="JoyState" href="#JoyState"><span>JoyState:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="types: JoyState" href="types.html#JoyState">types: JoyState</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="joyTrue" href="#joyTrue"><span>joyTrue:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="JoyTypeType.joyTrue" href="types.html#joyTrue">JoyTypeType.joyTrue</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="JoyType" href="#JoyType"><span>JoyType:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="types: JoyType" href="types.html#JoyType">types: JoyType</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="JoyTypeType" href="#JoyTypeType"><span>JoyTypeType:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="types: JoyTypeType" href="types.html#JoyTypeType">types: JoyTypeType</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="j_true" href="#j_true"><span>j_true:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="types: j_true" href="types.html#j_true">types: j_true</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="loop" href="#loop"><span>loop:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="joylib: loop(state: var JoyState)" href="joylib.html#loop%2CJoyState">joylib: loop(state: var JoyState)</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="pop" href="#pop"><span>pop:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="joylib: pop(state: var JoyState)" href="joylib.html#pop%2CJoyState">joylib: pop(state: var JoyState)</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="pop_any" href="#pop_any"><span>pop_any:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="utils: pop_any(state: var JoyState): JoyType" href="utils.html#pop_any%2CJoyState">utils: pop_any(state: var JoyState): JoyType</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="pop_bool" href="#pop_bool"><span>pop_bool:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="utils: pop_bool(state: var JoyState): bool" href="utils.html#pop_bool%2CJoyState">utils: pop_bool(state: var JoyState): bool</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="pop_int" href="#pop_int"><span>pop_int:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="utils: pop_int(state: var JoyState): BigInt" href="utils.html#pop_int%2CJoyState">utils: pop_int(state: var JoyState): BigInt</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="pop_list" href="#pop_list"><span>pop_list:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="utils: pop_list(state: var JoyState): JoyListType" href="utils.html#pop_list%2CJoyState">utils: pop_list(state: var JoyState): JoyListType</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="print_expression" href="#print_expression"><span>print_expression:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="printer: print_expression(stack: JoyListType): string" href="printer.html#print_expression%2CJoyListType">printer: print_expression(stack: JoyListType): string</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="print_stack" href="#print_stack"><span>print_stack:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="printer: print_stack(stack: JoyListType): string" href="printer.html#print_stack%2CJoyListType">printer: print_stack(stack: JoyListType): string</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="push_bool" href="#push_bool"><span>push_bool:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="utils: push_bool(a: bool; state: var JoyState)" href="utils.html#push_bool%2Cbool%2CJoyState">utils: push_bool(a: bool; state: var JoyState)</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="push_int" href="#push_int"><span>push_int:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="utils: push_int(a: BigInt; state: var JoyState)" href="utils.html#push_int%2CBigInt%2CJoyState">utils: push_int(a: BigInt; state: var JoyState)</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="push_list" href="#push_list"><span>push_list:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="utils: push_list(a: JoyListType; state: var JoyState)" href="utils.html#push_list%2CJoyListType%2CJoyState">utils: push_list(a: JoyListType; state: var JoyState)</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="read_str" href="#read_str"><span>read_str:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="reader: read_str(str: string): JoyListType" href="reader.html#read_str%2Cstring">reader: read_str(str: string): JoyListType</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="rest" href="#rest"><span>rest:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="joylib: rest(state: var JoyState)" href="joylib.html#rest%2CJoyState">joylib: rest(state: var JoyState)</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="stack" href="#stack"><span>stack:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="joylib: stack(state: var JoyState)" href="joylib.html#stack%2CJoyState">joylib: stack(state: var JoyState)</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="swaack" href="#swaack"><span>swaack:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="joylib: swaack(state: var JoyState)" href="joylib.html#swaack%2CJoyState">joylib: swaack(state: var JoyState)</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="swap" href="#swap"><span>swap:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="joylib: swap(state: var JoyState)" href="joylib.html#swap%2CJoyState">joylib: swap(state: var JoyState)</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
<dt><a name="truthy" href="#truthy"><span>truthy:</span></a></dt><dd><ul class="simple">
|
||||||
|
<li><a class="reference external"
|
||||||
|
data-doc-search-tag="joylib: truthy(state: var JoyState)" href="joylib.html#truthy%2CJoyState">joylib: truthy(state: var JoyState)</a></li>
|
||||||
|
</ul></dd>
|
||||||
|
</dl>
|
||||||
|
<div class="row">
|
||||||
|
<div class="twelve-columns footer">
|
||||||
|
<span class="nim-sprite"></span>
|
||||||
|
<br/>
|
||||||
|
<small style="color: var(--hint);">Made with Nim. Generated: 2021-02-20 03:26:17 UTC</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,268 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<!-- This file is generated by Nim. -->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
|
<!-- Favicon -->
|
||||||
|
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
|
||||||
|
|
||||||
|
<!-- Google fonts -->
|
||||||
|
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
|
||||||
|
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
|
||||||
|
|
||||||
|
<!-- CSS -->
|
||||||
|
<title>types</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="nimdoc.out.css">
|
||||||
|
|
||||||
|
<script type="text/javascript" src="dochack.js"></script>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
function main() {
|
||||||
|
var pragmaDots = document.getElementsByClassName("pragmadots");
|
||||||
|
for (var i = 0; i < pragmaDots.length; i++) {
|
||||||
|
pragmaDots[i].onclick = function(event) {
|
||||||
|
// Hide tease
|
||||||
|
event.target.parentNode.style.display = "none";
|
||||||
|
// Show actual
|
||||||
|
event.target.parentNode.nextElementSibling.style.display = "inline";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
|
||||||
|
function switchTheme(e) {
|
||||||
|
if (e.target.checked) {
|
||||||
|
document.documentElement.setAttribute('data-theme', 'dark');
|
||||||
|
localStorage.setItem('theme', 'dark');
|
||||||
|
} else {
|
||||||
|
document.documentElement.setAttribute('data-theme', 'light');
|
||||||
|
localStorage.setItem('theme', 'light');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
toggleSwitch.addEventListener('change', switchTheme, false);
|
||||||
|
|
||||||
|
const currentTheme = localStorage.getItem('theme') ? localStorage.getItem('theme') : null;
|
||||||
|
if (currentTheme) {
|
||||||
|
document.documentElement.setAttribute('data-theme', currentTheme);
|
||||||
|
|
||||||
|
if (currentTheme === 'dark') {
|
||||||
|
toggleSwitch.checked = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body onload="main()">
|
||||||
|
<div class="document" id="documentId">
|
||||||
|
<div class="container">
|
||||||
|
<h1 class="title">types</h1>
|
||||||
|
<div class="row">
|
||||||
|
<div class="three columns">
|
||||||
|
<div class="theme-switch-wrapper">
|
||||||
|
<label class="theme-switch" for="checkbox">
|
||||||
|
<input type="checkbox" id="checkbox" />
|
||||||
|
<div class="slider round"></div>
|
||||||
|
</label>
|
||||||
|
<em>Dark Mode</em>
|
||||||
|
</div>
|
||||||
|
<div id="global-links">
|
||||||
|
<ul class="simple">
|
||||||
|
<li>
|
||||||
|
<a href="theindex.html">Index</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div id="searchInputDiv">
|
||||||
|
Search: <input type="text" id="searchInput"
|
||||||
|
onkeyup="search()" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
Group by:
|
||||||
|
<select onchange="groupBy(this.value)">
|
||||||
|
<option value="section">Section</option>
|
||||||
|
<option value="type">Type</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<ul class="simple simple-toc" id="toc-list">
|
||||||
|
<li>
|
||||||
|
<a class="reference reference-toplevel" href="#7" id="57">Types</a>
|
||||||
|
<ul class="simple simple-toc-section">
|
||||||
|
<li><a class="reference" href="#JoyListType"
|
||||||
|
title="JoyListType = List[JoyType]">JoyListType</a></li>
|
||||||
|
<li><a class="reference" href="#JoyMapType"
|
||||||
|
title="JoyMapType = Map[string, JoyListType]">JoyMapType</a></li>
|
||||||
|
<li><a class="reference" href="#JoyState"
|
||||||
|
title="JoyState = tuple[stack: JoyListType, expression: JoyListType]">JoyState</a></li>
|
||||||
|
<li><a class="reference" href="#JoyTypeType"
|
||||||
|
title="JoyTypeType = enum
|
||||||
|
joyAtom, joyFalse, joyInt, joyList, joyParseError, joyTrue">JoyTypeType</a></li>
|
||||||
|
<li><a class="reference" href="#JoyType"
|
||||||
|
title="JoyType = ref object
|
||||||
|
case kind*: JoyTypeType
|
||||||
|
of joyAtom:
|
||||||
|
atomVal*: string
|
||||||
|
of joyFalse, joyTrue:
|
||||||
|
nil
|
||||||
|
of joyInt:
|
||||||
|
intVal*: BigInt
|
||||||
|
of joyList:
|
||||||
|
listVal*: JoyListType
|
||||||
|
of joyParseError:
|
||||||
|
errorMessage*: string">JoyType</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="reference reference-toplevel" href="#9" id="59">Lets</a>
|
||||||
|
<ul class="simple simple-toc-section">
|
||||||
|
<li><a class="reference" href="#j_true"
|
||||||
|
title="j_true = JoyType(kind: joyTrue)">j_true</a></li>
|
||||||
|
<li><a class="reference" href="#j_false"
|
||||||
|
title="j_false = JoyType(kind: joyFalse)">j_false</a></li>
|
||||||
|
<li><a class="reference" href="#j_loop"
|
||||||
|
title="j_loop = JoyType(kind: joyAtom, atomVal: "loop")">j_loop</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="nine columns" id="content">
|
||||||
|
<div id="tocRoot"></div>
|
||||||
|
|
||||||
|
<p class="module-desc"></p>
|
||||||
|
<div class="section" id="7">
|
||||||
|
<h1><a class="toc-backref" href="#7">Types</a></h1>
|
||||||
|
<dl class="item">
|
||||||
|
<a id="JoyListType"></a>
|
||||||
|
<dt><pre><a href="types.html#JoyListType"><span class="Identifier">JoyListType</span></a> <span class="Other">=</span> <span class="Identifier">List</span><span class="Other">[</span><a href="types.html#JoyType"><span class="Identifier">JoyType</span></a><span class="Other">]</span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/types.nim#L26"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/types.nim#L26" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="JoyMapType"></a>
|
||||||
|
<dt><pre><a href="types.html#JoyMapType"><span class="Identifier">JoyMapType</span></a> <span class="Other">=</span> <span class="Identifier">Map</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">,</span> <a href="types.html#JoyListType"><span class="Identifier">JoyListType</span></a><span class="Other">]</span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/types.nim#L27"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/types.nim#L27" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="JoyState"></a>
|
||||||
|
<dt><pre><a href="types.html#JoyState"><span class="Identifier">JoyState</span></a> <span class="Other">=</span> <span class="Keyword">tuple</span><span class="Other">[</span><span class="Identifier">stack</span><span class="Other">:</span> <a href="types.html#JoyListType"><span class="Identifier">JoyListType</span></a><span class="Other">,</span> <span class="Identifier">expression</span><span class="Other">:</span> <a href="types.html#JoyListType"><span class="Identifier">JoyListType</span></a><span class="Other">]</span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/types.nim#L29"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/types.nim#L29" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="JoyTypeType"></a>
|
||||||
|
<dt><pre><a href="types.html#JoyTypeType"><span class="Identifier">JoyTypeType</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
|
||||||
|
<span class="Identifier">joyAtom</span><span class="Other">,</span> <span class="Identifier">joyFalse</span><span class="Other">,</span> <span class="Identifier">joyInt</span><span class="Other">,</span> <span class="Identifier">joyList</span><span class="Other">,</span> <span class="Identifier">joyParseError</span><span class="Other">,</span> <span class="Identifier">joyTrue</span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/types.nim#L33"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/types.nim#L33" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="JoyType"></a>
|
||||||
|
<dt><pre><a href="types.html#JoyType"><span class="Identifier">JoyType</span></a> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Keyword">object</span>
|
||||||
|
<span class="Keyword">case</span> <span class="Identifier">kind</span><span class="Operator">*</span><span class="Other">:</span> <a href="types.html#JoyTypeType"><span class="Identifier">JoyTypeType</span></a>
|
||||||
|
<span class="Keyword">of</span> <span class="Identifier">joyAtom</span><span class="Other">:</span>
|
||||||
|
<span class="Identifier">atomVal</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
|
||||||
|
<span class="Keyword">of</span> <span class="Identifier">joyFalse</span><span class="Other">,</span> <span class="Identifier">joyTrue</span><span class="Other">:</span>
|
||||||
|
<span class="Keyword">nil</span>
|
||||||
|
<span class="Keyword">of</span> <span class="Identifier">joyInt</span><span class="Other">:</span>
|
||||||
|
<span class="Identifier">intVal</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">BigInt</span>
|
||||||
|
<span class="Keyword">of</span> <span class="Identifier">joyList</span><span class="Other">:</span>
|
||||||
|
<span class="Identifier">listVal</span><span class="Operator">*</span><span class="Other">:</span> <a href="types.html#JoyListType"><span class="Identifier">JoyListType</span></a>
|
||||||
|
<span class="Keyword">of</span> <span class="Identifier">joyParseError</span><span class="Other">:</span>
|
||||||
|
<span class="Identifier">errorMessage</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
|
||||||
|
</pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/types.nim#L41"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/types.nim#L41" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
|
||||||
|
</dl></div>
|
||||||
|
<div class="section" id="9">
|
||||||
|
<h1><a class="toc-backref" href="#9">Lets</a></h1>
|
||||||
|
<dl class="item">
|
||||||
|
<a id="j_true"></a>
|
||||||
|
<dt><pre><a href="types.html#j_true"><span class="Identifier">j_true</span></a> <span class="Other">=</span> <a href="types.html#JoyType"><span class="Identifier">JoyType</span></a><span class="Other">(</span><span class="Identifier">kind</span><span class="Other">:</span> <span class="DecNumber">joyTrue</span><span class="Other">)</span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/types.nim#L52"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/types.nim#L52" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="j_false"></a>
|
||||||
|
<dt><pre><a href="types.html#j_false"><span class="Identifier">j_false</span></a> <span class="Other">=</span> <a href="types.html#JoyType"><span class="Identifier">JoyType</span></a><span class="Other">(</span><span class="Identifier">kind</span><span class="Other">:</span> <span class="DecNumber">joyFalse</span><span class="Other">)</span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/types.nim#L53"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/types.nim#L53" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="j_loop"></a>
|
||||||
|
<dt><pre><a href="types.html#j_loop"><span class="Identifier">j_loop</span></a> <span class="Other">=</span> <a href="types.html#JoyType"><span class="Identifier">JoyType</span></a><span class="Other">(</span><span class="Identifier">kind</span><span class="Other">:</span> <span class="DecNumber">joyAtom</span><span class="Other">,</span> <span class="Identifier">atomVal</span><span class="Other">:</span> <span class="StringLit">"loop"</span><span class="Other">)</span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/types.nim#L57"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/types.nim#L57" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
|
||||||
|
</dl></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="twelve-columns footer">
|
||||||
|
<span class="nim-sprite"></span>
|
||||||
|
<br/>
|
||||||
|
<small style="color: var(--hint);">Made with Nim. Generated: 2021-02-20 03:26:16 UTC</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
JoyListType types.html#JoyListType types: JoyListType
|
||||||
|
JoyMapType types.html#JoyMapType types: JoyMapType
|
||||||
|
JoyState types.html#JoyState types: JoyState
|
||||||
|
joyAtom types.html#joyAtom JoyTypeType.joyAtom
|
||||||
|
joyFalse types.html#joyFalse JoyTypeType.joyFalse
|
||||||
|
joyInt types.html#joyInt JoyTypeType.joyInt
|
||||||
|
joyList types.html#joyList JoyTypeType.joyList
|
||||||
|
joyParseError types.html#joyParseError JoyTypeType.joyParseError
|
||||||
|
joyTrue types.html#joyTrue JoyTypeType.joyTrue
|
||||||
|
JoyTypeType types.html#JoyTypeType types: JoyTypeType
|
||||||
|
JoyType types.html#JoyType types: JoyType
|
||||||
|
j_true types.html#j_true types: j_true
|
||||||
|
j_false types.html#j_false types: j_false
|
||||||
|
j_loop types.html#j_loop types: j_loop
|
||||||
|
|
@ -0,0 +1,251 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<!-- This file is generated by Nim. -->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
|
<!-- Favicon -->
|
||||||
|
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
|
||||||
|
|
||||||
|
<!-- Google fonts -->
|
||||||
|
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
|
||||||
|
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
|
||||||
|
|
||||||
|
<!-- CSS -->
|
||||||
|
<title>utils</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="nimdoc.out.css">
|
||||||
|
|
||||||
|
<script type="text/javascript" src="dochack.js"></script>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
function main() {
|
||||||
|
var pragmaDots = document.getElementsByClassName("pragmadots");
|
||||||
|
for (var i = 0; i < pragmaDots.length; i++) {
|
||||||
|
pragmaDots[i].onclick = function(event) {
|
||||||
|
// Hide tease
|
||||||
|
event.target.parentNode.style.display = "none";
|
||||||
|
// Show actual
|
||||||
|
event.target.parentNode.nextElementSibling.style.display = "inline";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
|
||||||
|
function switchTheme(e) {
|
||||||
|
if (e.target.checked) {
|
||||||
|
document.documentElement.setAttribute('data-theme', 'dark');
|
||||||
|
localStorage.setItem('theme', 'dark');
|
||||||
|
} else {
|
||||||
|
document.documentElement.setAttribute('data-theme', 'light');
|
||||||
|
localStorage.setItem('theme', 'light');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
toggleSwitch.addEventListener('change', switchTheme, false);
|
||||||
|
|
||||||
|
const currentTheme = localStorage.getItem('theme') ? localStorage.getItem('theme') : null;
|
||||||
|
if (currentTheme) {
|
||||||
|
document.documentElement.setAttribute('data-theme', currentTheme);
|
||||||
|
|
||||||
|
if (currentTheme === 'dark') {
|
||||||
|
toggleSwitch.checked = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body onload="main()">
|
||||||
|
<div class="document" id="documentId">
|
||||||
|
<div class="container">
|
||||||
|
<h1 class="title">utils</h1>
|
||||||
|
<div class="row">
|
||||||
|
<div class="three columns">
|
||||||
|
<div class="theme-switch-wrapper">
|
||||||
|
<label class="theme-switch" for="checkbox">
|
||||||
|
<input type="checkbox" id="checkbox" />
|
||||||
|
<div class="slider round"></div>
|
||||||
|
</label>
|
||||||
|
<em>Dark Mode</em>
|
||||||
|
</div>
|
||||||
|
<div id="global-links">
|
||||||
|
<ul class="simple">
|
||||||
|
<li>
|
||||||
|
<a href="theindex.html">Index</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div id="searchInputDiv">
|
||||||
|
Search: <input type="text" id="searchInput"
|
||||||
|
onkeyup="search()" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
Group by:
|
||||||
|
<select onchange="groupBy(this.value)">
|
||||||
|
<option value="section">Section</option>
|
||||||
|
<option value="type">Type</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<ul class="simple simple-toc" id="toc-list">
|
||||||
|
<li>
|
||||||
|
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
|
||||||
|
<ul class="simple simple-toc-section">
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="reference reference-toplevel" href="#12" id="62">Procs</a>
|
||||||
|
<ul class="simple simple-toc-section">
|
||||||
|
<ul class="simple nested-toc-section">pop_any
|
||||||
|
<li><a class="reference" href="#pop_any%2CJoyState"
|
||||||
|
title="pop_any(state: var JoyState): JoyType">pop_any,<wbr>JoyState</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="simple nested-toc-section">pop_bool
|
||||||
|
<li><a class="reference" href="#pop_bool%2CJoyState"
|
||||||
|
title="pop_bool(state: var JoyState): bool">pop_bool,<wbr>JoyState</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="simple nested-toc-section">push_int
|
||||||
|
<li><a class="reference" href="#push_int%2CBigInt%2CJoyState"
|
||||||
|
title="push_int(a: BigInt; state: var JoyState)">push_int,<wbr>BigInt,<wbr>JoyState</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="simple nested-toc-section">pop_int
|
||||||
|
<li><a class="reference" href="#pop_int%2CJoyState"
|
||||||
|
title="pop_int(state: var JoyState): BigInt">pop_int,<wbr>JoyState</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="simple nested-toc-section">push_list
|
||||||
|
<li><a class="reference" href="#push_list%2CJoyListType%2CJoyState"
|
||||||
|
title="push_list(a: JoyListType; state: var JoyState)">push_list,<wbr>JoyListType,<wbr>JoyState</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="simple nested-toc-section">push_bool
|
||||||
|
<li><a class="reference" href="#push_bool%2Cbool%2CJoyState"
|
||||||
|
title="push_bool(a: bool; state: var JoyState)">push_bool,<wbr>bool,<wbr>JoyState</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<ul class="simple nested-toc-section">pop_list
|
||||||
|
<li><a class="reference" href="#pop_list%2CJoyState"
|
||||||
|
title="pop_list(state: var JoyState): JoyListType">pop_list,<wbr>JoyState</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="nine columns" id="content">
|
||||||
|
<div id="tocRoot"></div>
|
||||||
|
|
||||||
|
<p class="module-desc"></p>
|
||||||
|
<div class="section" id="6">
|
||||||
|
<h1><a class="toc-backref" href="#6">Imports</a></h1>
|
||||||
|
<dl class="item">
|
||||||
|
<a class="reference external" href="types.html">types</a>
|
||||||
|
</dl></div>
|
||||||
|
<div class="section" id="12">
|
||||||
|
<h1><a class="toc-backref" href="#12">Procs</a></h1>
|
||||||
|
<dl class="item">
|
||||||
|
<a id="pop_any,JoyState"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#pop_any%2CJoyState"><span class="Identifier">pop_any</span></a><span class="Other">(</span><span class="Identifier">state</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="types.html#JoyState"><span class="Identifier">JoyState</span></a><span class="Other">)</span><span class="Other">:</span> <a href="types.html#JoyType"><span class="Identifier">JoyType</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/utils.nim#L25"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/utils.nim#L25" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="pop_bool,JoyState"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#pop_bool%2CJoyState"><span class="Identifier">pop_bool</span></a><span class="Other">(</span><span class="Identifier">state</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="types.html#JoyState"><span class="Identifier">JoyState</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/utils.nim#L33"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/utils.nim#L33" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="pop_int,JoyState"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#pop_int%2CJoyState"><span class="Identifier">pop_int</span></a><span class="Other">(</span><span class="Identifier">state</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="types.html#JoyState"><span class="Identifier">JoyState</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">BigInt</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/utils.nim#L41"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/utils.nim#L41" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="pop_list,JoyState"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#pop_list%2CJoyState"><span class="Identifier">pop_list</span></a><span class="Other">(</span><span class="Identifier">state</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="types.html#JoyState"><span class="Identifier">JoyState</span></a><span class="Other">)</span><span class="Other">:</span> <a href="types.html#JoyListType"><span class="Identifier">JoyListType</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/utils.nim#L49"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/utils.nim#L49" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="push_int,BigInt,JoyState"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#push_int%2CBigInt%2CJoyState"><span class="Identifier">push_int</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <span class="Identifier">BigInt</span><span class="Other">;</span> <span class="Identifier">state</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="types.html#JoyState"><span class="Identifier">JoyState</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/utils.nim#L58"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/utils.nim#L58" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="push_list,JoyListType,JoyState"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#push_list%2CJoyListType%2CJoyState"><span class="Identifier">push_list</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <a href="types.html#JoyListType"><span class="Identifier">JoyListType</span></a><span class="Other">;</span> <span class="Identifier">state</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="types.html#JoyState"><span class="Identifier">JoyState</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/utils.nim#L61"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/utils.nim#L61" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<a id="push_bool,bool,JoyState"></a>
|
||||||
|
<dt><pre><span class="Keyword">proc</span> <a href="#push_bool%2Cbool%2CJoyState"><span class="Identifier">push_bool</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <span class="Identifier">bool</span><span class="Other">;</span> <span class="Identifier">state</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="types.html#JoyState"><span class="Identifier">JoyState</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||||
|
<dd>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://git.sr.ht/~sforman/Bliss/tree/10b5651ed242fb16c29f2c1f7340d77f65926ca4/utils.nim#L64"
|
||||||
|
class="link-seesrc" target="_blank">Source</a>
|
||||||
|
<a href="https://git.sr.ht/~sforman/Bliss/edit/devel/utils.nim#L64" class="link-seesrc" target="_blank" >Edit</a>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
|
||||||
|
</dl></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="twelve-columns footer">
|
||||||
|
<span class="nim-sprite"></span>
|
||||||
|
<br/>
|
||||||
|
<small style="color: var(--hint);">Made with Nim. Generated: 2021-02-20 03:26:16 UTC</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
pop_any utils.html#pop_any,JoyState utils: pop_any(state: var JoyState): JoyType
|
||||||
|
pop_bool utils.html#pop_bool,JoyState utils: pop_bool(state: var JoyState): bool
|
||||||
|
pop_int utils.html#pop_int,JoyState utils: pop_int(state: var JoyState): BigInt
|
||||||
|
pop_list utils.html#pop_list,JoyState utils: pop_list(state: var JoyState): JoyListType
|
||||||
|
push_int utils.html#push_int,BigInt,JoyState utils: push_int(a: BigInt; state: var JoyState)
|
||||||
|
push_list utils.html#push_list,JoyListType,JoyState utils: push_list(a: JoyListType; state: var JoyState)
|
||||||
|
push_bool utils.html#push_bool,bool,JoyState utils: push_bool(a: bool; state: var JoyState)
|
||||||
|
|
@ -0,0 +1,145 @@
|
||||||
|
#[
|
||||||
|
|
||||||
|
Copyright © 2021 Simon Forman
|
||||||
|
|
||||||
|
This file is part of Bliss
|
||||||
|
|
||||||
|
Bliss is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
Bliss is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with Bliss. If not see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
|
]#
|
||||||
|
import rdstdin, bigints, fp, printer, reader, types, joylib, utils, defs
|
||||||
|
|
||||||
|
|
||||||
|
# Handle Ctrl-C by raising an IOError to break out of the mainloop
|
||||||
|
# without waiting for the user to press enter.
|
||||||
|
proc ctrlc() {.noconv.} =
|
||||||
|
raise newException(IOError, "Got Ctrl-C, bye!")
|
||||||
|
|
||||||
|
setControlCHook(ctrlc)
|
||||||
|
|
||||||
|
|
||||||
|
proc joy_eval(sym: string, state: var JoyState): JoyState =
|
||||||
|
case sym
|
||||||
|
|
||||||
|
# Integer Math
|
||||||
|
|
||||||
|
of "+": push_int(pop_int(state) + pop_int(state), state)
|
||||||
|
of "*": push_int(pop_int(state) * pop_int(state), state)
|
||||||
|
of "-":
|
||||||
|
let tos = pop_int(state)
|
||||||
|
push_int(pop_int(state) - tos, state)
|
||||||
|
of "/":
|
||||||
|
let tos = pop_int(state)
|
||||||
|
push_int(pop_int(state) div tos, state)
|
||||||
|
of "%":
|
||||||
|
let tos = pop_int(state)
|
||||||
|
push_int(pop_int(state) mod tos, state)
|
||||||
|
|
||||||
|
# Comparision
|
||||||
|
|
||||||
|
of "<":
|
||||||
|
let tos = pop_int(state)
|
||||||
|
let second = pop_int(state)
|
||||||
|
push_bool(second < tos, state)
|
||||||
|
of ">":
|
||||||
|
let tos = pop_int(state)
|
||||||
|
let second = pop_int(state)
|
||||||
|
push_bool(second > tos, state)
|
||||||
|
of "<=":
|
||||||
|
let tos = pop_int(state)
|
||||||
|
let second = pop_int(state)
|
||||||
|
push_bool(second <= tos, state)
|
||||||
|
of ">=":
|
||||||
|
let tos = pop_int(state)
|
||||||
|
let second = pop_int(state)
|
||||||
|
push_bool(second >= tos, state)
|
||||||
|
of "=":
|
||||||
|
let tos = pop_int(state)
|
||||||
|
let second = pop_int(state)
|
||||||
|
push_bool(second == tos, state)
|
||||||
|
of "<>":
|
||||||
|
let tos = pop_int(state)
|
||||||
|
let second = pop_int(state)
|
||||||
|
push_bool(second != tos, state)
|
||||||
|
|
||||||
|
# Boolean logic
|
||||||
|
|
||||||
|
of "and": # Have to pop, Nim `and` short-circuits.
|
||||||
|
let tos = pop_bool(state)
|
||||||
|
let second = pop_bool(state)
|
||||||
|
push_bool(tos and second, state)
|
||||||
|
of "or": # Have to pop, Nim `or` short-circuits.
|
||||||
|
let tos = pop_bool(state)
|
||||||
|
let second = pop_bool(state)
|
||||||
|
push_bool(tos or second, state)
|
||||||
|
|
||||||
|
# Built-in Functions and Combinators
|
||||||
|
|
||||||
|
of "bool": truthy(state)
|
||||||
|
of "branch": branch(state)
|
||||||
|
of "clear": clear(state)
|
||||||
|
of "concat": concat(state)
|
||||||
|
of "cons": cons(state)
|
||||||
|
of "dip": dip(state)
|
||||||
|
of "dup": dup(state)
|
||||||
|
of "first": first(state)
|
||||||
|
of "i": i(state)
|
||||||
|
of "loop": loop(state)
|
||||||
|
of "pop": pop(state)
|
||||||
|
of "rest": rest(state)
|
||||||
|
of "stack": stack(state)
|
||||||
|
of "swaack": swaack(state)
|
||||||
|
of "swap": swap(state)
|
||||||
|
|
||||||
|
else:
|
||||||
|
let def = dictionary.get(sym)
|
||||||
|
if def.isEmpty:
|
||||||
|
raise newException(ValueError, "Unknown: " & sym)
|
||||||
|
state.expression = def.get() ++ state.expression
|
||||||
|
state
|
||||||
|
|
||||||
|
|
||||||
|
proc joy(state: var JoyState) =
|
||||||
|
while not state.expression.isEmpty:
|
||||||
|
# echo print_stack(state.stack), " . ", print_expression(state.expression)
|
||||||
|
let term = state.expression.head
|
||||||
|
state.expression = state.expression.tail
|
||||||
|
case term.kind
|
||||||
|
of joyInt, joyList, joyTrue, joyFalse:
|
||||||
|
state.stack = term ^^ state.stack
|
||||||
|
of joyAtom:
|
||||||
|
state = joy_eval(term.atomVal, state)
|
||||||
|
of joyParseError:
|
||||||
|
echo term.errorMessage
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var state0: JoyState = (stack: Nil[JoyType](), expression: Nil[JoyType]())
|
||||||
|
var state: JoyState
|
||||||
|
while true:
|
||||||
|
try:
|
||||||
|
let e = read_str(readLineFromStdin("joy? "))
|
||||||
|
state = (stack: state0.stack, expression: e)
|
||||||
|
except IOError:
|
||||||
|
break
|
||||||
|
try:
|
||||||
|
joy(state)
|
||||||
|
except:
|
||||||
|
echo getCurrentExceptionMsg()
|
||||||
|
echo print_stack(state0.stack)
|
||||||
|
continue
|
||||||
|
echo print_stack(state.stack)
|
||||||
|
state0 = state
|
||||||
|
|
@ -0,0 +1,110 @@
|
||||||
|
#[
|
||||||
|
|
||||||
|
Copyright © 2021 Simon Forman
|
||||||
|
|
||||||
|
This file is part of Bliss
|
||||||
|
|
||||||
|
Bliss is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
Bliss is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with Bliss. If not see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
|
]#
|
||||||
|
import bigints, fp, types, utils
|
||||||
|
|
||||||
|
proc branch*(state: var JoyState) =
|
||||||
|
let true_body = pop_list(state)
|
||||||
|
let false_body = pop_list(state)
|
||||||
|
if pop_bool(state):
|
||||||
|
state.expression = true_body ++ state.expression
|
||||||
|
else:
|
||||||
|
state.expression = false_body ++ state.expression
|
||||||
|
|
||||||
|
proc clear*(state: var JoyState) =
|
||||||
|
state.stack = Nil[JoyType]()
|
||||||
|
|
||||||
|
proc concat*(state: var JoyState) =
|
||||||
|
let tos = pop_list(state)
|
||||||
|
let second = pop_list(state)
|
||||||
|
push_list((second ++ tos), state)
|
||||||
|
|
||||||
|
proc cons*(state: var JoyState) =
|
||||||
|
let tos = pop_list(state)
|
||||||
|
let second = pop_any(state)
|
||||||
|
push_list((second ^^ tos), state)
|
||||||
|
|
||||||
|
proc dip*(state: var JoyState) =
|
||||||
|
let body = pop_list(state)
|
||||||
|
let tos = pop_any(state)
|
||||||
|
state.expression = body ++ tos ^^ state.expression
|
||||||
|
|
||||||
|
proc dup*(state: var JoyState) =
|
||||||
|
if state.stack.isEmpty:
|
||||||
|
raise newException(ValueError, "Cannot dup empty stack.")
|
||||||
|
state.stack = state.stack.head ^^ state.stack
|
||||||
|
|
||||||
|
proc first*(state: var JoyState) =
|
||||||
|
let tos = pop_list(state)
|
||||||
|
if tos.isEmpty:
|
||||||
|
raise newException(ValueError, "Cannot take first of empty list.")
|
||||||
|
state.stack = tos.head ^^ state.stack
|
||||||
|
|
||||||
|
proc i*(state: var JoyState) =
|
||||||
|
let body = pop_list(state)
|
||||||
|
state.expression = body ++ state.expression
|
||||||
|
|
||||||
|
proc loop*(state: var JoyState) =
|
||||||
|
let tos = pop_any(state)
|
||||||
|
case tos.kind:
|
||||||
|
of joyList:
|
||||||
|
if pop_bool(state):
|
||||||
|
state.expression = tos.listVal ++ tos ^^ j_loop ^^ state.expression
|
||||||
|
else:
|
||||||
|
raise newException(ValueError, "Loop body not a list.")
|
||||||
|
|
||||||
|
proc pop*(state: var JoyState) =
|
||||||
|
if state.stack.isEmpty:
|
||||||
|
raise newException(ValueError, "Cannot pop empty stack.")
|
||||||
|
state.stack = state.stack.tail
|
||||||
|
|
||||||
|
proc rest*(state: var JoyState) =
|
||||||
|
let tos = pop_list(state)
|
||||||
|
if tos.isEmpty:
|
||||||
|
raise newException(ValueError, "Cannot take rest of empty list.")
|
||||||
|
push_list(tos.tail, state)
|
||||||
|
|
||||||
|
proc stack*(state: var JoyState) =
|
||||||
|
push_list(state.stack, state)
|
||||||
|
|
||||||
|
proc swaack*(state: var JoyState) =
|
||||||
|
let tos = pop_list(state)
|
||||||
|
let stack = state.stack
|
||||||
|
state.stack = tos
|
||||||
|
push_list(stack, state)
|
||||||
|
|
||||||
|
proc swap*(state: var JoyState) =
|
||||||
|
let tos = pop_any(state)
|
||||||
|
let second = pop_any(state)
|
||||||
|
state.stack = second ^^ tos ^^ state.stack
|
||||||
|
|
||||||
|
proc truthy*(state: var JoyState) =
|
||||||
|
let tos = pop_any(state)
|
||||||
|
case tos.kind:
|
||||||
|
of joyTrue, joyFalse:
|
||||||
|
state.stack = tos ^^ state.stack
|
||||||
|
of joyInt:
|
||||||
|
push_bool(tos.intVal != zero, state)
|
||||||
|
of joyList:
|
||||||
|
push_bool(not tos.listVal.isEmpty, state)
|
||||||
|
else:
|
||||||
|
raise newException(ValueError, "Cannot Boolify.")
|
||||||
|
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
#[
|
||||||
|
|
||||||
|
Copyright © 2021 Simon Forman
|
||||||
|
|
||||||
|
This file is part of Bliss
|
||||||
|
|
||||||
|
Bliss is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
Bliss is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with Bliss. If not see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
|
]#
|
||||||
|
import strutils, bigints, fp, types
|
||||||
|
|
||||||
|
proc pr_str(thing: JoyType): string
|
||||||
|
|
||||||
|
proc joystr(s: JoyListType): string =
|
||||||
|
s.map(pr_str).asSeq.join(" ")
|
||||||
|
|
||||||
|
proc pr_str(thing: JoyType): string =
|
||||||
|
case thing.kind
|
||||||
|
of joyAtom: thing.atomVal
|
||||||
|
of joyInt: thing.intVal.toString
|
||||||
|
of joyList: "[" & joystr(thing.listVal) & "]"
|
||||||
|
of joyParseError: thing.errorMessage
|
||||||
|
of joyTrue: "true"
|
||||||
|
of joyFalse: "false"
|
||||||
|
|
||||||
|
proc print_expression*(stack: JoyListType): string =
|
||||||
|
joystr(stack)
|
||||||
|
|
||||||
|
proc print_stack*(stack: JoyListType): string =
|
||||||
|
joystr(stack.reverse)
|
||||||
|
|
||||||
|
|
@ -0,0 +1,107 @@
|
||||||
|
#[
|
||||||
|
|
||||||
|
Copyright © 2021 Simon Forman
|
||||||
|
|
||||||
|
This file is part of Bliss
|
||||||
|
|
||||||
|
Bliss is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
Bliss is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with Bliss. If not see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
|
]#
|
||||||
|
import pegs, bigints, fp, types
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
Token = string
|
||||||
|
|
||||||
|
Reader = tuple
|
||||||
|
tokens : seq[Token]
|
||||||
|
position: int
|
||||||
|
eof: bool
|
||||||
|
|
||||||
|
let token_pattern = peg"""
|
||||||
|
|
||||||
|
Token <- Bracket / Symbol
|
||||||
|
|
||||||
|
Bracket <- '[' / ']'
|
||||||
|
Symbol <- (!Bracket \S)+
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
# TODO: Maybe use PEG eventParser?
|
||||||
|
|
||||||
|
|
||||||
|
proc peek(reader: Reader): Token =
|
||||||
|
reader.tokens[reader.position]
|
||||||
|
|
||||||
|
|
||||||
|
proc next(reader: var Reader): Token =
|
||||||
|
if reader.eof:
|
||||||
|
raise newException(ValueError, "EOF")
|
||||||
|
result = peek(reader)
|
||||||
|
inc reader.position
|
||||||
|
reader.eof = reader.position >= reader.tokens.len
|
||||||
|
|
||||||
|
|
||||||
|
proc read_atom(reader: var Reader): JoyType =
|
||||||
|
let tok = next(reader)
|
||||||
|
if tok =~ peg"^('+' / '-' )? \d+$":
|
||||||
|
JoyType(kind: joyInt, intVal: tok.initBigInt)
|
||||||
|
elif tok == "true": j_true
|
||||||
|
elif tok == "false": j_false
|
||||||
|
else: JoyType(kind: joyAtom, atomVal: tok)
|
||||||
|
|
||||||
|
|
||||||
|
proc read_form(reader: var Reader): JoyType
|
||||||
|
|
||||||
|
|
||||||
|
proc read_list(reader: var Reader): JoyType =
|
||||||
|
var items : seq[JoyType] = @[]
|
||||||
|
discard next(reader) # Skip the '['.
|
||||||
|
while true:
|
||||||
|
if reader.eof:
|
||||||
|
return JoyType(kind: joyParseError, errorMessage: "EOF while scanning list.")
|
||||||
|
if peek(reader) == "]":
|
||||||
|
discard next(reader) # Skip the ']'.
|
||||||
|
break
|
||||||
|
items.add(read_form(reader))
|
||||||
|
JoyType(kind: joyList, listVal: items.asList)
|
||||||
|
|
||||||
|
|
||||||
|
proc read_form(reader: var Reader): JoyType =
|
||||||
|
if reader.eof:
|
||||||
|
# Blank or empty input, not really an error.
|
||||||
|
JoyType(kind: joyParseError, errorMessage: "")
|
||||||
|
elif peek(reader) == "[":
|
||||||
|
read_list(reader)
|
||||||
|
else:
|
||||||
|
read_atom(reader)
|
||||||
|
|
||||||
|
|
||||||
|
proc tokens_to_reader(tokens: seq[Token]): Reader =
|
||||||
|
var reader: Reader = (
|
||||||
|
tokens: tokens,
|
||||||
|
position: 0,
|
||||||
|
eof: tokens.len == 0
|
||||||
|
)
|
||||||
|
reader
|
||||||
|
|
||||||
|
|
||||||
|
proc read_str*(str: string): JoyListType =
|
||||||
|
var items : seq[JoyType] = @[]
|
||||||
|
var reader = tokens_to_reader(findAll(str, token_pattern))
|
||||||
|
while not reader.eof:
|
||||||
|
items.add(read_form(reader))
|
||||||
|
items.asList
|
||||||
|
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
#[
|
||||||
|
|
||||||
|
Copyright © 2021 Simon Forman
|
||||||
|
|
||||||
|
This file is part of Bliss
|
||||||
|
|
||||||
|
Bliss is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
Bliss is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with Bliss. If not see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
|
]#
|
||||||
|
import bigints, fp
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
JoyListType* = List[JoyType]
|
||||||
|
JoyMapType* = Map[string, JoyListType]
|
||||||
|
|
||||||
|
JoyState* = tuple
|
||||||
|
stack: JoyListType
|
||||||
|
expression: JoyListType
|
||||||
|
|
||||||
|
JoyTypeType* = enum
|
||||||
|
joyAtom,
|
||||||
|
joyFalse,
|
||||||
|
joyInt,
|
||||||
|
joyList,
|
||||||
|
joyParseError,
|
||||||
|
joyTrue
|
||||||
|
|
||||||
|
JoyType* = ref object
|
||||||
|
case kind*: JoyTypeType
|
||||||
|
of joyAtom: atomVal*: string
|
||||||
|
of joyFalse, joyTrue: nil
|
||||||
|
of joyInt: intVal*: BigInt
|
||||||
|
of joyList: listVal*: JoyListType
|
||||||
|
of joyParseError: errorMessage*: string
|
||||||
|
|
||||||
|
|
||||||
|
# Singleton values for Boolean type.
|
||||||
|
|
||||||
|
let j_true* = JoyType(kind: joyTrue)
|
||||||
|
let j_false* = JoyType(kind: joyFalse)
|
||||||
|
|
||||||
|
# Singleton values for Symbols.
|
||||||
|
|
||||||
|
let j_loop* = JoyType(kind: joyAtom, atomVal: "loop")
|
||||||
|
|
||||||
|
|
@ -0,0 +1,69 @@
|
||||||
|
#[
|
||||||
|
|
||||||
|
Copyright © 2021 Simon Forman
|
||||||
|
|
||||||
|
This file is part of Bliss
|
||||||
|
|
||||||
|
Bliss is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
Bliss is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with Bliss. If not see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
|
]#
|
||||||
|
import bigints, fp, types
|
||||||
|
|
||||||
|
|
||||||
|
proc pop_any*(state: var JoyState): JoyType =
|
||||||
|
# TODO: detect and report nils.
|
||||||
|
if state.stack.isEmpty:
|
||||||
|
raise newException(ValueError, "Not enough values on stack.")
|
||||||
|
let a = state.stack.head
|
||||||
|
state.stack = state.stack.tail
|
||||||
|
return a
|
||||||
|
|
||||||
|
proc pop_bool*(state: var JoyState): bool =
|
||||||
|
let a = pop_any(state)
|
||||||
|
case a.kind:
|
||||||
|
of joyTrue: result = true
|
||||||
|
of joyFalse: result = false
|
||||||
|
else:
|
||||||
|
raise newException(ValueError, "Not a Boolean value.")
|
||||||
|
|
||||||
|
proc pop_int*(state: var JoyState): BigInt =
|
||||||
|
let a = pop_any(state)
|
||||||
|
case a.kind:
|
||||||
|
of joyInt:
|
||||||
|
return a.intVal
|
||||||
|
else:
|
||||||
|
raise newException(ValueError, "Not an integer.")
|
||||||
|
|
||||||
|
proc pop_list*(state: var JoyState): JoyListType =
|
||||||
|
let a = pop_any(state)
|
||||||
|
case a.kind:
|
||||||
|
of joyList:
|
||||||
|
return a.listVal
|
||||||
|
else:
|
||||||
|
raise newException(ValueError, "Not a list.")
|
||||||
|
|
||||||
|
|
||||||
|
proc push_int*(a: BigInt, state: var JoyState) =
|
||||||
|
state.stack = JoyType(kind: joyInt, intVal: a) ^^ state.stack
|
||||||
|
|
||||||
|
proc push_list*(a: JoyListType, state: var JoyState) =
|
||||||
|
state.stack = JoyType(kind: joyList, listVal: a) ^^ state.stack
|
||||||
|
|
||||||
|
proc push_bool*(a: bool, state: var JoyState) =
|
||||||
|
if a:
|
||||||
|
state.stack = j_true ^^ state.stack
|
||||||
|
else:
|
||||||
|
state.stack = j_false ^^ state.stack
|
||||||
|
|
||||||
Loading…
Reference in New Issue