akane.html 32 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <!-- This file is generated by Nim. -->
  5. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  8. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  9. <!-- Favicon -->
  10. <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=="/>
  11. <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=">
  12. <!-- Google fonts -->
  13. <link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
  14. <link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
  15. <!-- CSS -->
  16. <title>akane</title>
  17. <style type="text/css" >
  18. /*
  19. Stylesheet for use with Docutils/rst2html.
  20. See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
  21. customize this style sheet.
  22. Modified from Chad Skeeters' rst2html-style
  23. https://bitbucket.org/cskeeters/rst2html-style/
  24. Modified by Boyd Greenfield and narimiran
  25. */
  26. html {
  27. font-size: 100%;
  28. -webkit-text-size-adjust: 100%;
  29. -ms-text-size-adjust: 100%; }
  30. body {
  31. font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif;
  32. font-weight: 400;
  33. font-size: 1.125em;
  34. line-height: 1.5;
  35. color: #222;
  36. background-color: #FCFCFC; }
  37. /* Skeleton grid */
  38. .container {
  39. position: relative;
  40. width: 100%;
  41. max-width: 1050px;
  42. margin: 0 auto;
  43. padding: 0;
  44. box-sizing: border-box; }
  45. .column,
  46. .columns {
  47. width: 100%;
  48. float: left;
  49. box-sizing: border-box;
  50. margin-left: 1%;
  51. }
  52. .column:first-child,
  53. .columns:first-child {
  54. margin-left: 0; }
  55. .three.columns {
  56. width: 19%; }
  57. .nine.columns {
  58. width: 80.0%; }
  59. .twelve.columns {
  60. width: 100%;
  61. margin-left: 0; }
  62. @media screen and (max-width: 860px) {
  63. .three.columns {
  64. display: none;
  65. }
  66. .nine.columns {
  67. width: 98.0%;
  68. }
  69. body {
  70. font-size: 1em;
  71. line-height: 1.35;
  72. }
  73. }
  74. cite {
  75. font-style: italic !important; }
  76. /* Nim search input */
  77. div#searchInputDiv {
  78. margin-bottom: 1em;
  79. }
  80. input#searchInput {
  81. width: 80%;
  82. }
  83. /*
  84. * Some custom formatting for input forms.
  85. * This also fixes input form colors on Firefox with a dark system theme on Linux.
  86. */
  87. input {
  88. -moz-appearance: none;
  89. color: #333;
  90. background-color: #f8f8f8;
  91. border: 1px solid #aaa;
  92. font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif;
  93. font-size: 0.9em;
  94. padding: 6px;
  95. }
  96. input:focus {
  97. border: 1px solid #1fa0eb;
  98. box-shadow: 0 0 2px #1fa0eb;
  99. }
  100. /* Docgen styles */
  101. /* Links */
  102. a {
  103. color: #07b;
  104. text-decoration: none;
  105. }
  106. a span.Identifier {
  107. text-decoration: underline;
  108. text-decoration-color: #aab;
  109. }
  110. a.reference-toplevel {
  111. font-weight: bold;
  112. }
  113. a.toc-backref {
  114. text-decoration: none;
  115. color: #222; }
  116. a.link-seesrc {
  117. color: #607c9f;
  118. font-size: 0.9em;
  119. font-style: italic; }
  120. a:hover,
  121. a:focus {
  122. color: #607c9f;
  123. text-decoration: underline; }
  124. a:hover span.Identifier {
  125. color: #607c9f;
  126. }
  127. sub,
  128. sup {
  129. position: relative;
  130. font-size: 75%;
  131. line-height: 0;
  132. vertical-align: baseline; }
  133. sup {
  134. top: -0.5em; }
  135. sub {
  136. bottom: -0.25em; }
  137. img {
  138. width: auto;
  139. height: auto;
  140. max-width: 100%;
  141. vertical-align: middle;
  142. border: 0;
  143. -ms-interpolation-mode: bicubic; }
  144. @media print {
  145. * {
  146. color: black !important;
  147. text-shadow: none !important;
  148. background: transparent !important;
  149. box-shadow: none !important; }
  150. a,
  151. a:visited {
  152. text-decoration: underline; }
  153. a[href]:after {
  154. content: " (" attr(href) ")"; }
  155. abbr[title]:after {
  156. content: " (" attr(title) ")"; }
  157. .ir a:after,
  158. a[href^="javascript:"]:after,
  159. a[href^="#"]:after {
  160. content: ""; }
  161. pre,
  162. blockquote {
  163. border: 1px solid #999;
  164. page-break-inside: avoid; }
  165. thead {
  166. display: table-header-group; }
  167. tr,
  168. img {
  169. page-break-inside: avoid; }
  170. img {
  171. max-width: 100% !important; }
  172. @page {
  173. margin: 0.5cm; }
  174. h1 {
  175. page-break-before: always; }
  176. h1.title {
  177. page-break-before: avoid; }
  178. p,
  179. h2,
  180. h3 {
  181. orphans: 3;
  182. widows: 3; }
  183. h2,
  184. h3 {
  185. page-break-after: avoid; }
  186. }
  187. p {
  188. margin-top: 0.5em;
  189. margin-bottom: 0.5em;
  190. }
  191. small {
  192. font-size: 85%; }
  193. strong {
  194. font-weight: 600;
  195. font-size: 0.95em;
  196. color: #3c3c3c;
  197. }
  198. em {
  199. font-style: italic; }
  200. h1 {
  201. font-size: 1.8em;
  202. font-weight: 400;
  203. padding-bottom: .25em;
  204. border-bottom: 1px solid #aaa;
  205. margin-top: 2.5em;
  206. margin-bottom: 1em;
  207. line-height: 1.2em; }
  208. h1.title {
  209. padding-bottom: 1em;
  210. border-bottom: 0px;
  211. font-size: 2.5em;
  212. text-align: center;
  213. font-weight: 900;
  214. margin-top: 0.75em;
  215. margin-bottom: 0em;
  216. }
  217. h2 {
  218. font-size: 1.3em;
  219. margin-top: 2em; }
  220. h2.subtitle {
  221. text-align: center; }
  222. h3 {
  223. font-size: 1.125em;
  224. font-style: italic;
  225. margin-top: 1.5em; }
  226. h4 {
  227. font-size: 1.125em;
  228. margin-top: 1em; }
  229. h5 {
  230. font-size: 1.125em;
  231. margin-top: 0.75em; }
  232. h6 {
  233. font-size: 1.1em; }
  234. ul,
  235. ol {
  236. padding: 0;
  237. margin-top: 0.5em;
  238. margin-left: 0.75em; }
  239. ul ul,
  240. ul ol,
  241. ol ol,
  242. ol ul {
  243. margin-bottom: 0;
  244. margin-left: 1.25em; }
  245. li {
  246. list-style-type: circle;
  247. }
  248. ul.simple-boot li {
  249. list-style-type: none;
  250. margin-left: 0em;
  251. margin-bottom: 0.5em;
  252. }
  253. ol.simple > li, ul.simple > li {
  254. margin-bottom: 0.25em;
  255. margin-left: 0.4em }
  256. ul.simple.simple-toc > li {
  257. margin-top: 1em;
  258. }
  259. ul.simple-toc {
  260. list-style: none;
  261. font-size: 0.9em;
  262. margin-left: -0.3em;
  263. margin-top: 1em; }
  264. ul.simple-toc > li {
  265. list-style-type: none;
  266. }
  267. ul.simple-toc-section {
  268. list-style-type: circle;
  269. margin-left: 1em;
  270. color: #6c9aae; }
  271. ol.arabic {
  272. list-style: decimal; }
  273. ol.loweralpha {
  274. list-style: lower-alpha; }
  275. ol.upperalpha {
  276. list-style: upper-alpha; }
  277. ol.lowerroman {
  278. list-style: lower-roman; }
  279. ol.upperroman {
  280. list-style: upper-roman; }
  281. ul.auto-toc {
  282. list-style-type: none; }
  283. dl {
  284. margin-bottom: 1.5em; }
  285. dt {
  286. margin-bottom: -0.5em;
  287. margin-left: 0.0em; }
  288. dd {
  289. margin-left: 2.0em;
  290. margin-bottom: 3.0em;
  291. margin-top: 0.5em; }
  292. hr {
  293. margin: 2em 0;
  294. border: 0;
  295. border-top: 1px solid #aaa; }
  296. blockquote {
  297. font-size: 0.9em;
  298. font-style: italic;
  299. padding-left: 0.5em;
  300. margin-left: 0;
  301. border-left: 5px solid #bbc;
  302. }
  303. .pre {
  304. font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace;
  305. font-weight: 500;
  306. font-size: 0.85em;
  307. background-color: #f0f3ff;
  308. padding-left: 3px;
  309. padding-right: 3px;
  310. border-radius: 4px;
  311. }
  312. pre {
  313. font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace;
  314. color: #222;
  315. font-weight: 500;
  316. display: inline-block;
  317. box-sizing: border-box;
  318. min-width: 100%;
  319. padding: 0.5em;
  320. margin-top: 0.5em;
  321. margin-bottom: 0.5em;
  322. font-size: 0.85em;
  323. white-space: pre !important;
  324. overflow-y: hidden;
  325. overflow-x: visible;
  326. background-color: ghostwhite;
  327. border: 1px solid #dde;
  328. -webkit-border-radius: 6px;
  329. -moz-border-radius: 6px;
  330. border-radius: 6px; }
  331. .pre-scrollable {
  332. max-height: 340px;
  333. overflow-y: scroll; }
  334. /* Nim line-numbered tables */
  335. .line-nums-table {
  336. width: 100%;
  337. table-layout: fixed; }
  338. table.line-nums-table {
  339. border-radius: 4px;
  340. border: 1px solid #cccccc;
  341. background-color: ghostwhite;
  342. border-collapse: separate;
  343. margin-top: 15px;
  344. margin-bottom: 25px; }
  345. .line-nums-table tbody {
  346. border: none; }
  347. .line-nums-table td pre {
  348. border: none;
  349. background-color: transparent; }
  350. .line-nums-table td.blob-line-nums {
  351. width: 28px; }
  352. .line-nums-table td.blob-line-nums pre {
  353. color: #b0b0b0;
  354. -webkit-filter: opacity(75%);
  355. text-align: right;
  356. border-color: transparent;
  357. background-color: transparent;
  358. padding-left: 0px;
  359. margin-left: 0px;
  360. padding-right: 0px;
  361. margin-right: 0px; }
  362. table {
  363. max-width: 100%;
  364. background-color: transparent;
  365. margin-top: 0.5em;
  366. margin-bottom: 1.5em;
  367. border-collapse: collapse;
  368. border-color: #ccc;
  369. border-spacing: 0;
  370. font-size: 0.9em;
  371. }
  372. table th, table td {
  373. padding: 0px 0.5em 0px;
  374. }
  375. table th {
  376. background-color: #e8e8e8;
  377. font-weight: bold; }
  378. table th.docinfo-name {
  379. background-color: transparent;
  380. }
  381. table tr:hover {
  382. background-color: ghostwhite; }
  383. /* rst2html default used to remove borders from tables and images */
  384. .borderless, table.borderless td, table.borderless th {
  385. border: 0; }
  386. table.borderless td, table.borderless th {
  387. /* Override padding for "table.docutils td" with "! important".
  388. The right padding separates the table cells. */
  389. padding: 0 0.5em 0 0 !important; }
  390. .first {
  391. /* Override more specific margin styles with "! important". */
  392. margin-top: 0 !important; }
  393. .last, .with-subtitle {
  394. margin-bottom: 0 !important; }
  395. .hidden {
  396. display: none; }
  397. blockquote.epigraph {
  398. margin: 2em 5em; }
  399. dl.docutils dd {
  400. margin-bottom: 0.5em; }
  401. object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
  402. overflow: hidden; }
  403. div.figure {
  404. margin-left: 2em;
  405. margin-right: 2em; }
  406. div.footer, div.header {
  407. clear: both;
  408. text-align: center;
  409. color: #666;
  410. font-size: smaller; }
  411. div.footer {
  412. padding-top: 5em;
  413. }
  414. div.line-block {
  415. display: block;
  416. margin-top: 1em;
  417. margin-bottom: 1em; }
  418. div.line-block div.line-block {
  419. margin-top: 0;
  420. margin-bottom: 0;
  421. margin-left: 1.5em; }
  422. div.topic {
  423. margin: 2em; }
  424. div.search_results {
  425. background-color: antiquewhite;
  426. margin: 3em;
  427. padding: 1em;
  428. border: 1px solid #4d4d4d;
  429. }
  430. div#global-links ul {
  431. margin-left: 0;
  432. list-style-type: none;
  433. }
  434. div#global-links > simple-boot {
  435. margin-left: 3em;
  436. }
  437. hr.docutils {
  438. width: 75%; }
  439. img.align-left, .figure.align-left, object.align-left {
  440. clear: left;
  441. float: left;
  442. margin-right: 1em; }
  443. img.align-right, .figure.align-right, object.align-right {
  444. clear: right;
  445. float: right;
  446. margin-left: 1em; }
  447. img.align-center, .figure.align-center, object.align-center {
  448. display: block;
  449. margin-left: auto;
  450. margin-right: auto; }
  451. .align-left {
  452. text-align: left; }
  453. .align-center {
  454. clear: both;
  455. text-align: center; }
  456. .align-right {
  457. text-align: right; }
  458. /* reset inner alignment in figures */
  459. div.align-right {
  460. text-align: inherit; }
  461. p.attribution {
  462. text-align: right;
  463. margin-left: 50%; }
  464. p.caption {
  465. font-style: italic; }
  466. p.credits {
  467. font-style: italic;
  468. font-size: smaller; }
  469. p.label {
  470. white-space: nowrap; }
  471. p.rubric {
  472. font-weight: bold;
  473. font-size: larger;
  474. color: maroon;
  475. text-align: center; }
  476. p.topic-title {
  477. font-weight: bold; }
  478. pre.address {
  479. margin-bottom: 0;
  480. margin-top: 0;
  481. font: inherit; }
  482. pre.literal-block, pre.doctest-block, pre.math, pre.code {
  483. margin-left: 2em;
  484. margin-right: 2em; }
  485. pre.code .ln {
  486. color: grey; }
  487. /* line numbers */
  488. pre.code, code {
  489. background-color: #eeeeee; }
  490. pre.code .comment, code .comment {
  491. color: #5c6576; }
  492. pre.code .keyword, code .keyword {
  493. color: #3B0D06;
  494. font-weight: bold; }
  495. pre.code .literal.string, code .literal.string {
  496. color: #0c5404; }
  497. pre.code .name.builtin, code .name.builtin {
  498. color: #352b84; }
  499. pre.code .deleted, code .deleted {
  500. background-color: #DEB0A1; }
  501. pre.code .inserted, code .inserted {
  502. background-color: #A3D289; }
  503. span.classifier {
  504. font-style: oblique; }
  505. span.classifier-delimiter {
  506. font-weight: bold; }
  507. span.option {
  508. white-space: nowrap; }
  509. span.problematic {
  510. color: #b30000; }
  511. span.section-subtitle {
  512. /* font-size relative to parent (h1..h6 element) */
  513. font-size: 80%; }
  514. span.DecNumber {
  515. color: #252dbe; }
  516. span.BinNumber {
  517. color: #252dbe; }
  518. span.HexNumber {
  519. color: #252dbe; }
  520. span.OctNumber {
  521. color: #252dbe; }
  522. span.FloatNumber {
  523. color: #252dbe; }
  524. span.Identifier {
  525. color: #222; }
  526. span.Keyword {
  527. font-weight: 600;
  528. color: #5e8f60; }
  529. span.StringLit {
  530. color: #a4255b; }
  531. span.LongStringLit {
  532. color: #a4255b; }
  533. span.CharLit {
  534. color: #a4255b; }
  535. span.EscapeSequence {
  536. color: black; }
  537. span.Operator {
  538. color: black; }
  539. span.Punctuation {
  540. color: black; }
  541. span.Comment, span.LongComment {
  542. font-style: italic;
  543. font-weight: 400;
  544. color: #484a86; }
  545. span.RegularExpression {
  546. color: darkviolet; }
  547. span.TagStart {
  548. color: darkviolet; }
  549. span.TagEnd {
  550. color: darkviolet; }
  551. span.Key {
  552. color: #252dbe; }
  553. span.Value {
  554. color: #252dbe; }
  555. span.RawData {
  556. color: #a4255b; }
  557. span.Assembler {
  558. color: #252dbe; }
  559. span.Preprocessor {
  560. color: #252dbe; }
  561. span.Directive {
  562. color: #252dbe; }
  563. span.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,
  564. span.Other {
  565. color: black; }
  566. /* Pop type, const, proc, and iterator defs in nim def blocks */
  567. dt pre > span.Identifier, dt pre > span.Operator {
  568. color: #155da4;
  569. font-weight: 700; }
  570. dt pre > span.Keyword ~ span.Identifier, dt pre > span.Identifier ~ span.Identifier,
  571. dt pre > span.Operator ~ span.Identifier, dt pre > span.Other ~ span.Identifier {
  572. color: inherit;
  573. font-weight: inherit; }
  574. /* Nim sprite for the footer (taken from main page favicon) */
  575. .nim-sprite {
  576. display: inline-block;
  577. height: 16px;
  578. width: 16px;
  579. background-position: 0 0;
  580. background-size: 16px 16px;
  581. -webkit-filter: opacity(50%);
  582. background-repeat: no-repeat;
  583. background-image: url("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==");
  584. margin-bottom: -5px; }
  585. span.pragmadots {
  586. /* Position: relative frees us up to make the dots
  587. look really nice without fucking up the layout and
  588. causing bulging in the parent container */
  589. position: relative;
  590. /* 1px down looks slightly nicer */
  591. top: 1px;
  592. padding: 2px;
  593. background-color: #e8e8e8;
  594. border-radius: 4px;
  595. margin: 0 2px;
  596. cursor: pointer;
  597. font-size: 0.8em;
  598. }
  599. span.pragmadots:hover {
  600. background-color: #DBDBDB;
  601. }
  602. span.pragmawrap {
  603. display: none;
  604. }
  605. span.attachedType {
  606. display: none;
  607. visibility: hidden;
  608. }
  609. </style>
  610. <script type="text/javascript" src="dochack.js"></script>
  611. <script type="text/javascript">
  612. function main() {
  613. var pragmaDots = document.getElementsByClassName("pragmadots");
  614. for (var i = 0; i < pragmaDots.length; i++) {
  615. pragmaDots[i].onclick = function(event) {
  616. // Hide tease
  617. event.target.parentNode.style.display = "none";
  618. // Show actual
  619. event.target.parentNode.nextElementSibling.style.display = "inline";
  620. }
  621. }
  622. }
  623. </script>
  624. </head>
  625. <body onload="main()">
  626. <div class="document" id="documentId">
  627. <div class="container">
  628. <h1 class="title">akane</h1>
  629. <div class="row">
  630. <div class="three columns">
  631. <div id="global-links">
  632. <ul class="simple">
  633. </ul>
  634. </div>
  635. <div id="searchInputDiv">
  636. Search: <input type="text" id="searchInput"
  637. onkeyup="search()" />
  638. </div>
  639. <div>
  640. Group by:
  641. <select onchange="groupBy(this.value)">
  642. <option value="section">Section</option>
  643. <option value="type">Type</option>
  644. </select>
  645. </div>
  646. <ul class="simple simple-toc" id="toc-list">
  647. <li>
  648. <a class="reference reference-toplevel" href="#7" id="57">Types</a>
  649. <ul class="simple simple-toc-section">
  650. <li><a class="reference" href="#ServerRef"
  651. title="ServerRef = ref object
  652. port*: uint16
  653. address*: string
  654. server*: AsyncHttpServer"><wbr />Server<wbr />Ref<span class="attachedType"></span></a></li>
  655. </ul>
  656. </li>
  657. <li>
  658. <a class="reference reference-toplevel" href="#8" id="58">Vars</a>
  659. <ul class="simple simple-toc-section">
  660. <li><a class="reference" href="#AKANE_DEBUG_MODE"
  661. title="AKANE_DEBUG_MODE: bool = false"><wbr />AKANE_<wbr />DEBUG_<wbr />MODE<span class="attachedType"></span></a></li>
  662. </ul>
  663. </li>
  664. <li>
  665. <a class="reference reference-toplevel" href="#12" id="62">Procs</a>
  666. <ul class="simple simple-toc-section">
  667. <li><a class="reference" href="#newServer%2Cstring%2Cuint16%2Cbool"
  668. title="newServer(address: string = &quot;127.0.0.1&quot;; port: uint16 = 5000; debug: bool = false): ServerRef"><wbr />new<wbr />Server<span class="attachedType">ServerRef</span></a></li>
  669. <li><a class="reference" href="#loadtemplate%2Cstring%2CJsonNode"
  670. title="loadtemplate(name: string; json: JsonNode = %*{}): Future[string]"><wbr />loadtemplate<span class="attachedType"></span></a></li>
  671. <li><a class="reference" href="#parseQuery%2CRequest"
  672. title="parseQuery(request: Request): Future[JsonNode]"><wbr />parse<wbr />Query<span class="attachedType"></span></a></li>
  673. </ul>
  674. </li>
  675. <li>
  676. <a class="reference reference-toplevel" href="#17" id="67">Macros</a>
  677. <ul class="simple simple-toc-section">
  678. <li><a class="reference" href="#pages.m%2CServerRef%2Cuntyped"
  679. title="pages(server: ServerRef; body: untyped): untyped"><wbr />pages<span class="attachedType">ServerRef</span></a></li>
  680. <li><a class="reference" href="#answer.m%2Cuntyped%2Cuntyped"
  681. title="answer(request, message: untyped; http_code = Http200): untyped"><wbr />answer<span class="attachedType"></span></a></li>
  682. <li><a class="reference" href="#error.m%2Cuntyped%2Cuntyped"
  683. title="error(request, message: untyped; http_code = Http404): untyped"><wbr />error<span class="attachedType"></span></a></li>
  684. <li><a class="reference" href="#start.m%2CServerRef"
  685. title="start(server: ServerRef): untyped"><wbr />start<span class="attachedType">ServerRef</span></a></li>
  686. </ul>
  687. </li>
  688. </ul>
  689. </div>
  690. <div class="nine columns" id="content">
  691. <div id="tocRoot"></div>
  692. <p class="module-desc"></p>
  693. <div class="section" id="7">
  694. <h1><a class="toc-backref" href="#7">Types</a></h1>
  695. <dl class="item">
  696. <a id="ServerRef"></a>
  697. <dt><pre><a href="akane.html#ServerRef"><span class="Identifier">ServerRef</span></a> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Keyword">object</span>
  698. <span class="Identifier">port</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">uint16</span>
  699. <span class="Identifier">address</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
  700. <span class="Identifier">server</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">AsyncHttpServer</span>
  701. </pre></dt>
  702. <dd>
  703. </dd>
  704. </dl></div>
  705. <div class="section" id="8">
  706. <h1><a class="toc-backref" href="#8">Vars</a></h1>
  707. <dl class="item">
  708. <a id="AKANE_DEBUG_MODE"></a>
  709. <dt><pre><a href="akane.html#AKANE_DEBUG_MODE"><span class="Identifier">AKANE_DEBUG_MODE</span></a><span class="Other">:</span> <span class="Identifier">bool</span> <span class="Other">=</span> <span class="Identifier">false</span></pre></dt>
  710. <dd>
  711. change it with <a class="reference external" href="#newServer,string,uint16,bool">newServer proc</a>
  712. </dd>
  713. </dl></div>
  714. <div class="section" id="12">
  715. <h1><a class="toc-backref" href="#12">Procs</a></h1>
  716. <dl class="item">
  717. <a id="newServer,string,uint16,bool"></a>
  718. <dt><pre><span class="Keyword">proc</span> <a href="#newServer%2Cstring%2Cuint16%2Cbool"><span class="Identifier">newServer</span></a><span class="Other">(</span><span class="Identifier">address</span><span class="Other">:</span> <span class="Identifier">string</span> <span class="Other">=</span> <span class="StringLit">&quot;127.0.0.1&quot;</span><span class="Other">;</span> <span class="Identifier">port</span><span class="Other">:</span> <span class="Identifier">uint16</span> <span class="Other">=</span> <span class="DecNumber">5000</span><span class="Other">;</span> <span class="Identifier">debug</span><span class="Other">:</span> <span class="Identifier">bool</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">)</span><span class="Other">:</span> <a href="akane.html#ServerRef"><span class="Identifier">ServerRef</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">
  719. <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</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">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
  720. <dd>
  721. <p>Creates a new ServerRef object.</p>
  722. <p>Arguments:</p>
  723. <ul class="simple"><li><tt class="docutils literal"><span class="pre">address</span></tt> - server address, e.g. &quot;127.0.0.1&quot;</li>
  724. <li><tt class="docutils literal"><span class="pre">port</span></tt> - server port, e.g. 5000</li>
  725. <li><tt class="docutils literal"><span class="pre">debug</span></tt> - debug mode</li>
  726. </ul>
  727. </dd>
  728. <a id="loadtemplate,string,JsonNode"></a>
  729. <dt><pre><span class="Keyword">proc</span> <a href="#loadtemplate%2Cstring%2CJsonNode"><span class="Identifier">loadtemplate</span></a><span class="Other">(</span><span class="Identifier">name</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">json</span><span class="Other">:</span> <span class="Identifier">JsonNode</span> <span class="Other">=</span> <span class="Operator">%*</span><span class="Other">{</span><span class="Other">}</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">string</span><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">inline</span><span class="Other">,</span>
  730. <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">FutureError</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>
  731. <dd>
  732. <p>Loads HTML template from <tt class="docutils literal"><span class="pre">templates</span></tt> folder.</p>
  733. <p>Arguments:</p>
  734. <ul class="simple"><li><tt class="docutils literal"><span class="pre">name</span></tt> - template's name, e.g. &quot;index&quot;, &quot;api&quot;, etc.</li>
  735. <li><tt class="docutils literal"><span class="pre">json</span></tt> - Json data, which replaces in the template.</li>
  736. </ul>
  737. <p>Replaces:</p>
  738. <ul class="simple"><li>$(key) -&gt; value</li>
  739. <li>if $(key) { ... } -&gt; ... (if value is true)</li>
  740. </ul>
  741. </dd>
  742. <a id="parseQuery,Request"></a>
  743. <dt><pre><span class="Keyword">proc</span> <a href="#parseQuery%2CRequest"><span class="Identifier">parseQuery</span></a><span class="Other">(</span><span class="Identifier">request</span><span class="Other">:</span> <span class="Identifier">Request</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">JsonNode</span><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">
  744. <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">FutureError</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">TimeEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
  745. <dd>
  746. Decodes query.<dl class="docutils"><dt>e.g.:</dt>
  747. <dd>&quot;a=5&amp;b=10&quot; -&gt; {&quot;a&quot;: &quot;5&quot;, &quot;b&quot;: &quot;10&quot;}</dd>
  748. </dl>
  749. <p>This also have debug output, if AKANE_DEBUG_MODE is true.</p>
  750. </dd>
  751. </dl></div>
  752. <div class="section" id="17">
  753. <h1><a class="toc-backref" href="#17">Macros</a></h1>
  754. <dl class="item">
  755. <a id="pages.m,ServerRef,untyped"></a>
  756. <dt><pre><span class="Keyword">macro</span> <a href="#pages.m%2CServerRef%2Cuntyped"><span class="Identifier">pages</span></a><span class="Other">(</span><span class="Identifier">server</span><span class="Other">:</span> <a href="akane.html#ServerRef"><span class="Identifier">ServerRef</span></a><span class="Other">;</span> <span class="Identifier">body</span><span class="Other">:</span> <span class="Identifier">untyped</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">untyped</span></pre></dt>
  757. <dd>
  758. <p>This macro provides convenient page adding.</p>
  759. <p><tt class="docutils literal"><span class="pre">body</span></tt> should be StmtList. page type can be:</p>
  760. <ul class="simple"><li><tt class="docutils literal"><span class="pre">equals</span></tt></li>
  761. <li><tt class="docutils literal"><span class="pre">startswith</span></tt></li>
  762. <li><tt class="docutils literal"><span class="pre">endswith</span></tt></li>
  763. <li><tt class="docutils literal"><span class="pre">regex</span></tt></li>
  764. <li><tt class="docutils literal"><span class="pre">notfound</span></tt> - this page uses without URL argument.</li>
  765. </ul>
  766. <blockquote><p><dl class="docutils"><dt>server.pages:</dt>
  767. <dd><dl class="docutils"><dt>equals(&quot;/home&quot;):</dt>
  768. <dd>echo url echo urlParams</dd>
  769. </dl>
  770. </dd>
  771. </dl>
  772. </p></blockquote>
  773. </dd>
  774. <a id="answer.m,untyped,untyped"></a>
  775. <dt><pre><span class="Keyword">macro</span> <a href="#answer.m%2Cuntyped%2Cuntyped"><span class="Identifier">answer</span></a><span class="Other">(</span><span class="Identifier">request</span><span class="Other">,</span> <span class="Identifier">message</span><span class="Other">:</span> <span class="Identifier">untyped</span><span class="Other">;</span> <span class="Identifier">http_code</span> <span class="Other">=</span> <span class="Identifier">Http200</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">untyped</span></pre></dt>
  776. <dd>
  777. Responds from server with utf-8.<dl class="docutils"><dt>Translates to:</dt>
  778. <dd>await request.respond(Http200, &quot;&lt;head&gt;&lt;meta charset='utf-8'&gt;&lt;/head&gt;&quot; &amp; message)</dd>
  779. </dl>
  780. </dd>
  781. <a id="error.m,untyped,untyped"></a>
  782. <dt><pre><span class="Keyword">macro</span> <a href="#error.m%2Cuntyped%2Cuntyped"><span class="Identifier">error</span></a><span class="Other">(</span><span class="Identifier">request</span><span class="Other">,</span> <span class="Identifier">message</span><span class="Other">:</span> <span class="Identifier">untyped</span><span class="Other">;</span> <span class="Identifier">http_code</span> <span class="Other">=</span> <span class="Identifier">Http404</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">untyped</span></pre></dt>
  783. <dd>
  784. Responds from server with utf-8.<dl class="docutils"><dt>Translates to:</dt>
  785. <dd>await request.respond(Http404, &quot;&lt;head&gt;&lt;meta charset='utf-8'&gt;&lt;/head&gt;&quot; &amp; message)</dd>
  786. </dl>
  787. </dd>
  788. <a id="start.m,ServerRef"></a>
  789. <dt><pre><span class="Keyword">macro</span> <a href="#start.m%2CServerRef"><span class="Identifier">start</span></a><span class="Other">(</span><span class="Identifier">server</span><span class="Other">:</span> <a href="akane.html#ServerRef"><span class="Identifier">ServerRef</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">untyped</span></pre></dt>
  790. <dd>
  791. Starts server.
  792. </dd>
  793. </dl></div>
  794. </div>
  795. </div>
  796. <div class="row">
  797. <div class="twelve-columns footer">
  798. <span class="nim-sprite"></span>
  799. <br/>
  800. <small>Made with Nim. Generated: 2020-03-15 03:39:34 UTC</small>
  801. </div>
  802. </div>
  803. </div>
  804. </div>
  805. </body>
  806. </html>