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