all repos — h3rald @ 58a50461a5cdbe34366c7006e1aa2b032f8634f9

The sources of https://h3rald.com

Added nimline reference docs.
h3rald h3rald@h3rald.com
Sun, 12 Aug 2018 20:57:50 +0200
commit

58a50461a5cdbe34366c7006e1aa2b032f8634f9

parent

23ac9f968a4bdd79414a5cbe8d23c0374b5b5f42

1 files changed, 1674 insertions(+), 0 deletions(-)

jump to
A assets/nimline/nimline.html

@@ -0,0 +1,1674 @@

+<?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=="/> + +<!-- 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>Module nimline</title> +<style type="text/css" > +/* +Stylesheet for use with Docutils/rst2html. + +See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to +customize this style sheet. + +Modified from Chad Skeeters' rst2html-style +https://bitbucket.org/cskeeters/rst2html-style/ + +Modified by Boyd Greenfield +*/ +/* SCSS variables */ +/* Text weights */ +/* Body colors */ +/* Text colors */ +/* Link colors */ +/* Syntax highlighting colors */ +/* Pct changes */ +/* Mixins */ +/* Body/layout */ +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; } + +/* Where we want fancier font if available */ +h1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p { + font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif !important; } + +h1.title { + font-weight: 900; } + +body { + font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif; + font-weight: 400; + font-size: 16px; + line-height: 20px; + color: #444; + letter-spacing: 0.15px; + background-color: rgba(252, 248, 244, 0.45); } + +/* Skeleton grid */ +.container { + position: relative; + width: 100%; + max-width: 960px; + margin: 0 auto; + padding: 0 20px; + box-sizing: border-box; } + +.column, +.columns { + width: 100%; + float: left; + box-sizing: border-box; } + +/* For devices larger than 400px */ +@media (min-width: 400px) { + .container { + width: 100%; + padding: 0; } } +/* For devices larger than 650px */ +@media (min-width: 650px) { + .container { + width: 100%; } + + .column, + .columns { + margin-left: 4%; } + + .column:first-child, + .columns:first-child { + margin-left: 0; } + + .one.column, + .one.columns { + width: 4.66666666667%; } + + .two.columns { + width: 13.3333333333%; } + + .three.columns { + width: 22%; } + + .four.columns { + width: 30.6666666667%; } + + .five.columns { + width: 39.3333333333%; } + + .six.columns { + width: 48%; } + + .seven.columns { + width: 56.6666666667%; } + + .eight.columns { + width: 65.3333333333%; } + + .nine.columns { + width: 74.0%; } + + .ten.columns { + width: 82.6666666667%; } + + .eleven.columns { + width: 91.3333333333%; } + + .twelve.columns { + width: 100%; + margin-left: 0; } + + .one-third.column { + width: 30.6666666667%; } + + .two-thirds.column { + width: 65.3333333333%; } } +/* Customer Overrides */ +.footer { + text-align: center; + color: #969696; + padding-top: 10%; } + +p.module-desc { + font-size: 1.1em; + color: #666666; } + +a.link-seesrc { + color: #aec7d2; + font-style: italic; } + +a.link-seesrc:hover { + color: #6c9aae; } + +#toc-list { + word-wrap: break-word; } + +ul.simple-toc { + list-style: none; } + +ul.simple-toc a.reference-toplevel { + font-weight: bold; + color: #0077b3; } + +ul.simple-toc-section { + list-style-type: circle; + color: #6c9aae; } + +ul.simple-toc-section a.reference { + color: #0077b3; } + +cite { + font-style: italic !important; } + +dt > pre { + border-color: rgba(0, 0, 0, 0.1); + background-color: rgba(255, 255, 255, 0.3); + margin: 15px 0px 5px; } + +dd > pre { + border-color: rgba(0, 0, 0, 0.1); + background-color: whitesmoke; + margin-top: 8px; } + +.item > dd { + margin-left: 10px; + margin-bottom: 30px; } + +/* Nim line-numbered tables */ +.line-nums-table { + width: 100%; + table-layout: fixed; } + +/* Nim search input */ +div#searchInput { + margin-bottom: 8px; +} +div#searchInput input#searchInput { + width: 10em; +} +div.search-groupby { + margin-bottom: 8px; +} + +table.line-nums-table { + border-radius: 4px; + border: 1px solid #cccccc; + background-color: whitesmoke; + border-collapse: separate; + margin-top: 15px; + margin-bottom: 25px; } + +.line-nums-table tbody { + border: none; } + +.line-nums-table td pre { + border: none; + background-color: transparent; } + +.line-nums-table td.blob-line-nums { + width: 28px; } + +.line-nums-table td.blob-line-nums pre { + color: #b0b0b0; + -webkit-filter: opacity(75%); + text-align: right; + border-color: transparent; + background-color: transparent; + padding-left: 0px; + margin-left: 0px; + padding-right: 0px; + margin-right: 0px; } + +/* Docgen styles */ +/* Links */ +a { + color: #0077b3; + text-decoration: none; } + +a:hover, +a:focus { + color: #00334d; + text-decoration: underline; } + +a:visited { + color: #00334d; } + +a:focus { + outline: thin dotted #2d2d2d; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; } + +a:hover, +a:active { + outline: 0; } + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; } + +sup { + top: -0.5em; } + +sub { + bottom: -0.25em; } + +img { + width: auto; + height: auto; + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; } + +@media print { + * { + color: black !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; } + + a, + a:visited { + text-decoration: underline; } + + a[href]:after { + content: " (" attr(href) ")"; } + + abbr[title]:after { + content: " (" attr(title) ")"; } + + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; } + + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; } + + thead { + display: table-header-group; } + + tr, + img { + page-break-inside: avoid; } + + img { + max-width: 100% !important; } + + @page { + margin: 0.5cm; } + + h1 { + page-break-before: always; } + + h1.title { + page-break-before: avoid; } + + p, + h2, + h3 { + orphans: 3; + widows: 3; } + + h2, + h3 { + page-break-after: avoid; } } +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; } + +.img-polaroid { + padding: 4px; + background-color: rgba(252, 248, 244, 0.75); + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } + +p { + margin: 0 0 8px; } + +small { + font-size: 85%; } + +strong { + font-weight: 600; } + +em { + font-style: italic; } + +cite { + font-style: normal; } + +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif; + font-weight: 600; + line-height: 20px; + color: inherit; + text-rendering: optimizelegibility; } + +h1 { + font-size: 2em; + font-weight: 400; + padding-bottom: .15em; + border-bottom: 1px solid #aaaaaa; + margin-top: 1.0em; + line-height: 1.2em; } + +h1.title { + padding-bottom: 1em; + border-bottom: 0px; + font-size: 2.75em; } + +h2 { + font-size: 1.5em; + margin-top: 1.5em; } + +h3 { + font-size: 1.3em; + font-style: italic; + margin-top: 0.75em; } + +h4 { + font-size: 1.3em; + margin-top: 0.5em; } + +h5 { + font-size: 1.2em; + margin-top: 0.25em; } + +h6 { + font-size: 1.1em; } + +ul, +ol { + padding: 0; + margin: 0 0 0px 15px; } + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; } + +li { + line-height: 20px; } + +dl { + margin-bottom: 20px; } + +dt, +dd { + line-height: 20px; } + +dt { + font-weight: bold; } + +dd { + margin-left: 10px; + margin-bottom: 26px; } + +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; } + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; } + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; } + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #EFEBE0; } + +table.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote { + border-left: 5px solid #c9c9c9; +} + +table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p { + margin-bottom: 0; + font-size: 15px; + font-weight: 200; + line-height: 1.5; + font-style: italic; } + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; } + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; } + +code, +pre { + font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace; + padding: 0 3px 2px; + font-weight: 500; + font-size: 12px; + color: #444444; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; } + +.pre { + font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace; + font-weight: 600; + /*color: #504da6;*/ +} + +code { + padding: 2px 4px; + color: #444444; + white-space: nowrap; + background-color: white; + border: 1px solid #777777; } + +pre { + display: inline-block; + box-sizing: border-box; + min-width: calc(100% - 19.5px); + padding: 9.5px; + margin: 0.25em 10px 10px 10px; + font-size: 15px; + line-height: 20px; + white-space: pre !important; + overflow-y: hidden; + overflow-x: visible; + background-color: rgba(0, 0, 0, 0.01); + border: 1px solid #cccccc; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; } + +pre.prettyprint { + margin-bottom: 20px; } + +pre code { + padding: 0; + color: inherit; + white-space: pre; + overflow-x: visible; + background-color: transparent; + border: 0; } + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; } + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; } + +table th, table td { + padding: 0px 8px 0px; +} + +.table { + width: 100%; + margin-bottom: 20px; } + +.table th, +.table td { + padding: 8px; + line-height: 20px; + text-align: left; + vertical-align: top; + border-top: 1px solid #444444; } + +.table th { + font-weight: bold; } + +.table thead th { + vertical-align: bottom; } + +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; } + +.table tbody + tbody { + border-top: 2px solid #444444; } + +.table .table { + background-color: rgba(252, 248, 244, 0.75); } + +.table-condensed th, +.table-condensed td { + padding: 4px 5px; } + +.table-bordered { + border: 1px solid #444444; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; } + +.table-bordered th, +.table-bordered td { + border-left: 1px solid #444444; } + +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; } + +.table-bordered thead:first-child tr:first-child > th:first-child, +.table-bordered tbody:first-child tr:first-child > td:first-child, +.table-bordered tbody:first-child tr:first-child > th:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; } + +.table-bordered thead:first-child tr:first-child > th:last-child, +.table-bordered tbody:first-child tr:first-child > td:last-child, +.table-bordered tbody:first-child tr:first-child > th:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; } + +.table-bordered thead:last-child tr:last-child > th:first-child, +.table-bordered tbody:last-child tr:last-child > td:first-child, +.table-bordered tbody:last-child tr:last-child > th:first-child, +.table-bordered tfoot:last-child tr:last-child > td:first-child, +.table-bordered tfoot:last-child tr:last-child > th:first-child { + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; } + +.table-bordered thead:last-child tr:last-child > th:last-child, +.table-bordered tbody:last-child tr:last-child > td:last-child, +.table-bordered tbody:last-child tr:last-child > th:last-child, +.table-bordered tfoot:last-child tr:last-child > td:last-child, +.table-bordered tfoot:last-child tr:last-child > th:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; } + +.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + -moz-border-radius-bottomleft: 0; } + +.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomright: 0; } + +.table-bordered caption + thead tr:first-child th:first-child, +.table-bordered caption + tbody tr:first-child td:first-child, +.table-bordered colgroup + thead tr:first-child th:first-child, +.table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; } + +.table-bordered caption + thead tr:first-child th:last-child, +.table-bordered caption + tbody tr:first-child td:last-child, +.table-bordered colgroup + thead tr:first-child th:last-child, +.table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; } + +table.docutils th { + background-color: #e8e8e8; } + +table.docutils tr:hover { + background-color: whitesmoke; } + +.table-striped tbody > tr:nth-child(odd) > td, +.table-striped tbody > tr:nth-child(odd) > th { + background-color: rgba(252, 248, 244, 0.75); } + +.table-hover tbody tr:hover > td, +.table-hover tbody tr:hover > th { + background-color: rgba(241, 222, 204, 0.75); } + +table td[class*="span"], +table th[class*="span"], +.row-fluid table td[class*="span"], +.row-fluid table th[class*="span"] { + display: table-cell; + float: none; + margin-left: 0; } + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; + background-color: rgba(230, 197, 164, 0.75); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; } + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; + color: inherit; } + +.hero-unit li { + line-height: 30px; } + +/* rst2html default used to remove borders from tables and images */ +.borderless, table.borderless td, table.borderless th { + border: 0; } + +table.borderless td, table.borderless th { + /* Override padding for "table.docutils td" with "! important". + The right padding separates the table cells. */ + padding: 0 0.5em 0 0 !important; } + +.first { + /* Override more specific margin styles with "! important". */ + margin-top: 0 !important; } + +.last, .with-subtitle { + margin-bottom: 0 !important; } + +.hidden { + display: none; } + +a.toc-backref { + text-decoration: none; + color: #444444; } + +blockquote.epigraph { + margin: 2em 5em; } + +dl.docutils dd { + margin-bottom: 0.5em; } + +object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] { + overflow: hidden; } + +/* Uncomment (and remove this text!) to get bold-faced definition list terms +dl.docutils dt { + font-weight: bold } +*/ +div.abstract { + margin: 2em 5em; } + +div.abstract p.topic-title { + font-weight: bold; + text-align: center; } + +div.admonition, div.attention, div.caution, div.danger, div.error, +div.hint, div.important, div.note, div.tip, div.warning { + margin: 2em; + border: medium outset; + padding: 1em; } + +div.note, div.warning { + margin: 1.5em 0px; + border: none; } + +div.note p.admonition-title, +div.warning p.admonition-title { + display: none; } + +/* Clearfix + * http://css-tricks.com/snippets/css/clear-fix/ + */ +div.note:after, +div.warning:after { + content: ""; + display: table; + clear: both; } + +div.note p:before, +div.warning p:before { + display: block; + float: left; + font-size: 4em; + line-height: 1em; + margin-right: 20px; + margin-left: 0em; + margin-top: -10px; + content: '\0270D'; + /*handwriting*/ } + +div.warning p:before { + content: '\026A0'; + /*warning*/ } + +div.admonition p.admonition-title, div.hint p.admonition-title, +div.important p.admonition-title, div.note p.admonition-title, +div.tip p.admonition-title { + font-weight: bold; + font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif; } + +div.attention p.admonition-title, div.caution p.admonition-title, +div.danger p.admonition-title, div.error p.admonition-title, +div.warning p.admonition-title, .code .error { + color: #b30000; + font-weight: bold; + font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif; } + +/* Uncomment (and remove this text!) to get reduced vertical space in + compound paragraphs. +div.compound .compound-first, div.compound .compound-middle { + margin-bottom: 0.5em } + +div.compound .compound-last, div.compound .compound-middle { + margin-top: 0.5em } +*/ +div.dedication { + margin: 2em 5em; + text-align: center; + font-style: italic; } + +div.dedication p.topic-title { + font-weight: bold; + font-style: normal; } + +div.figure { + margin-left: 2em; + margin-right: 2em; } + +div.footer, div.header { + clear: both; + font-size: smaller; } + +div.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; } + +div.line-block div.line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; } + +div.sidebar { + margin: 0 0 0.5em 1em; + border: medium outset; + padding: 1em; + background-color: rgba(252, 248, 244, 0.75); + width: 40%; + float: right; + clear: right; } + +div.sidebar p.rubric { + font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif; + font-size: medium; } + +div.system-messages { + margin: 5em; } + +div.system-messages h1 { + color: #b30000; } + +div.system-message { + border: medium outset; + padding: 1em; } + +div.system-message p.system-message-title { + color: #b30000; + font-weight: bold; } + +div.topic { + margin: 2em; } + +h1.section-subtitle, h2.section-subtitle, h3.section-subtitle, +h4.section-subtitle, h5.section-subtitle, h6.section-subtitle { + margin-top: 0.4em; } + +h1.title { + text-align: center; } + +h2.subtitle { + text-align: center; } + +hr.docutils { + width: 75%; } + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; } + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; } + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; } + +.align-left { + text-align: left; } + +.align-center { + clear: both; + text-align: center; } + +.align-right { + text-align: right; } + +/* reset inner alignment in figures */ +div.align-right { + text-align: inherit; } + +/* div.align-center * { */ +/* text-align: left } */ + +ul.simple > li { + margin-bottom: 0.5em } + +ol.simple, ul.simple { + margin-bottom: 1em; } + +ol.arabic { + list-style: decimal; } + +ol.loweralpha { + list-style: lower-alpha; } + +ol.upperalpha { + list-style: upper-alpha; } + +ol.lowerroman { + list-style: lower-roman; } + +ol.upperroman { + list-style: upper-roman; } + +p.attribution { + text-align: right; + margin-left: 50%; } + +p.caption { + font-style: italic; } + +p.credits { + font-style: italic; + font-size: smaller; } + +p.label { + white-space: nowrap; } + +p.rubric { + font-weight: bold; + font-size: larger; + color: maroon; + text-align: center; } + +p.sidebar-title { + font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif; + font-weight: bold; + font-size: larger; } + +p.sidebar-subtitle { + font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif; + font-weight: bold; } + +p.topic-title { + font-weight: bold; } + +pre.address { + margin-bottom: 0; + margin-top: 0; + font: inherit; } + +pre.literal-block, pre.doctest-block, pre.math, pre.code { + margin-left: 2em; + margin-right: 2em; } + +pre.code .ln { + color: grey; } + +/* line numbers */ +pre.code, code { + background-color: #eeeeee; } + +pre.code .comment, code .comment { + color: #5c6576; } + +pre.code .keyword, code .keyword { + color: #3B0D06; + font-weight: bold; } + +pre.code .literal.string, code .literal.string { + color: #0c5404; } + +pre.code .name.builtin, code .name.builtin { + color: #352b84; } + +pre.code .deleted, code .deleted { + background-color: #DEB0A1; } + +pre.code .inserted, code .inserted { + background-color: #A3D289; } + +span.classifier { + font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif; + font-style: oblique; } + +span.classifier-delimiter { + font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif; + font-weight: bold; } + +span.interpreted { + font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif; } + +span.option { + white-space: nowrap; } + +span.pre { + white-space: pre; } + +span.problematic { + color: #b30000; } + +span.section-subtitle { + /* font-size relative to parent (h1..h6 element) */ + font-size: 80%; } + +table.citation { + border-left: solid 1px #666666; + margin-left: 1px; } + +table.docinfo { + margin: 0em; + margin-top: 2em; + margin-bottom: 2em; + font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif !important; + color: #444444; } + +table.docutils { + margin-top: 0.5em; + margin-bottom: 0.5em; } + +table.footnote { + border-left: solid 1px #2d2d2d; + margin-left: 1px; } + +table.docutils td, table.docutils th, +table.docinfo td, table.docinfo th { + padding-left: 0.5em; + padding-right: 0.5em; + vertical-align: top; } + +table.docutils th.field-name, table.docinfo th.docinfo-name { + font-weight: 700; + text-align: left; + white-space: nowrap; + padding-left: 0; } + +h1 tt.docutils, h2 tt.docutils, h3 tt.docutils, +h4 tt.docutils, h5 tt.docutils, h6 tt.docutils { + font-size: 100%; } + +ul.auto-toc { + list-style-type: none; } + +span.DecNumber { + color: #252dbe; } + +span.BinNumber { + color: #252dbe; } + +span.HexNumber { + color: #252dbe; } + +span.OctNumber { + color: #252dbe; } + +span.FloatNumber { + color: #252dbe; } + +span.Identifier { + color: #3b3b3b; } + +span.Keyword { + font-weight: 600; + color: #5e8f60; } + +span.StringLit { + color: #a4255b; } + +span.LongStringLit { + color: #a4255b; } + +span.CharLit { + color: #a4255b; } + +span.EscapeSequence { + color: black; } + +span.Operator { + color: black; } + +span.Punctuation { + color: black; } + +span.Comment, span.LongComment { + font-style: italic; + font-weight: 400; + color: #484a86; } + +span.RegularExpression { + color: darkviolet; } + +span.TagStart { + color: darkviolet; } + +span.TagEnd { + color: darkviolet; } + +span.Key { + color: #252dbe; } + +span.Value { + color: #252dbe; } + +span.RawData { + color: #a4255b; } + +span.Assembler { + color: #252dbe; } + +span.Preprocessor { + color: #252dbe; } + +span.Directive { + color: #252dbe; } + +span.Command, span.Rule, span.Hyperlink, span.Label, span.Reference, +span.Other { + color: black; } + +/* Pop type, const, proc, and iterator defs in nim def blocks */ +dt pre > span.Identifier, dt pre > span.Operator { + color: #155da4; + font-weight: 700; } + +dt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier { + color: inherit; + font-weight: inherit; } + +dt pre > span.Operator ~ span.Identifier, dt pre > span.Operator ~ span.Operator { + color: inherit; + font-weight: inherit; } + +/* Nim sprite for the footer (taken from main page favicon) */ +.nim-sprite { + display: inline-block; + height: 12px; + width: 12px; + background-position: 0 0; + background-size: 12px 12px; + -webkit-filter: opacity(50%); + background-repeat: no-repeat; + 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=="); + margin-bottom: -5px; } +div.pragma { + display: none; +} +span.pragmabegin { + cursor: pointer; +} +span.pragmaend { + cursor: pointer; +} + +div.search_results { + background-color: antiquewhite; + margin: 3em; + padding: 1em; + border: 1px solid #4d4d4d; +} + +div#global-links ul { + margin-left: 0; + list-style-type: none; +} +</style> + +<script type="text/javascript" src="../dochack.js"></script> + +<script type="text/javascript"> +function togglepragma(d) { + if (d.style.display != 'inline') + d.style.display = 'inline'; + else + d.style.display = 'none'; +} + +function main() { + var elements = document.getElementsByClassName("pragmabegin"); + for (var i = 0; i < elements.length; ++i) { + var e = elements[i]; + e.onclick = function(event) { + togglepragma(event.target.nextSibling); + }; + } + var elements = document.getElementsByClassName("pragmaend"); + for (var i = 0; i < elements.length; ++i) { + var e = elements[i]; + e.onclick = function(event) { + togglepragma(event.target.previousSibling); + }; + } +} +</script> + +</head> +<body onload="main()"> +<div class="document" id="documentId"> + <div class="container"> + <h1 class="title">Module nimline</h1> + <div class="row"> + <div class="three columns"> + <div id="global-links"> + <ul class="simple"> + </ul> + </div> + <div id="searchInput"> + 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="#7" id="57">Types</a> + <ul class="simple simple-toc-section"> + <li><a class="reference" href="#Key" + title="Key = int"><wbr />Key<span class="attachedType" style="visibility:hidden"></span></a></li> + <li><a class="reference" href="#KeySeq" + title="KeySeq = seq[Key]"><wbr />Key<wbr />Seq<span class="attachedType" style="visibility:hidden"></span></a></li> + <li><a class="reference" href="#KeyCallback" + title="KeyCallback = proc (ed: var LineEditor)"><wbr />Key<wbr />Callback<span class="attachedType" style="visibility:hidden"></span></a></li> + <li><a class="reference" href="#LineError" + title="LineError = ref Exception"><wbr />Line<wbr />Error<span class="attachedType" style="visibility:hidden"></span></a></li> + <li><a class="reference" href="#LineEditorError" + title="LineEditorError = ref Exception"><wbr />Line<wbr />Editor<wbr />Error<span class="attachedType" style="visibility:hidden"></span></a></li> + <li><a class="reference" href="#LineEditorMode" + title="LineEditorMode = enum + mdInsert, mdReplace"><wbr />Line<wbr />Editor<wbr />Mode<span class="attachedType" style="visibility:hidden"></span></a></li> + <li><a class="reference" href="#Line" + title="Line = object + text: string + position: int"><wbr />Line<span class="attachedType" style="visibility:hidden"></span></a></li> + <li><a class="reference" href="#LineHistory" + title="LineHistory = object + file: string + tainted: bool + position: int + queue: Deque[string] + max: int"><wbr />Line<wbr />History<span class="attachedType" style="visibility:hidden"></span></a></li> + <li><a class="reference" href="#LineEditor" + title="LineEditor = object + completionCallback*: proc (ed: LineEditor): seq[string] + history: LineHistory + line: Line + mode: LineEditorMode"><wbr />Line<wbr />Editor<span class="attachedType" style="visibility:hidden"></span></a></li> + + </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="#KEYNAMES" + title="KEYNAMES: array[0 .. 31, string]"><wbr />KEYNAMES<span class="attachedType" style="visibility:hidden"></span></a></li> + <li><a class="reference" href="#KEYSEQS" + title="KEYSEQS: CritBitTree[KeySeq]"><wbr />KEYSEQS<span class="attachedType" style="visibility:hidden"></span></a></li> + <li><a class="reference" href="#KEYMAP" + title="KEYMAP: CritBitTree[KeyCallback]"><wbr />KEYMAP<span class="attachedType" style="visibility:hidden"></span></a></li> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#10" id="60">Consts</a> + <ul class="simple simple-toc-section"> + <li><a class="reference" href="#CTRL" + title="CTRL = {0..31}"><wbr />CTRL<span class="attachedType" style="visibility:hidden"></span></a></li> + <li><a class="reference" href="#DIGIT" + title="DIGIT = {48..57}"><wbr />DIGIT<span class="attachedType" style="visibility:hidden"></span></a></li> + <li><a class="reference" href="#LETTER" + title="LETTER = {65..122}"><wbr />LETTER<span class="attachedType" style="visibility:hidden"></span></a></li> + <li><a class="reference" href="#UPPERLETTER" + title="UPPERLETTER = {65..90}"><wbr />UPPERLETTER<span class="attachedType" style="visibility:hidden"></span></a></li> + <li><a class="reference" href="#LOWERLETTER" + title="LOWERLETTER = {97..122}"><wbr />LOWERLETTER<span class="attachedType" style="visibility:hidden"></span></a></li> + <li><a class="reference" href="#PRINTABLE" + title="PRINTABLE = {32..126}"><wbr />PRINTABLE<span class="attachedType" style="visibility:hidden"></span></a></li> + <li><a class="reference" href="#ESCAPES" + title="ESCAPES = {27}"><wbr />ESCAPES<span class="attachedType" style="visibility:hidden"></span></a></li> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#12" id="62">Procs</a> + <ul class="simple simple-toc-section"> + <li><a class="reference" href="#putchr,cint" + title="putchr(c: cint)"><wbr />putchr<span class="attachedType" style="visibility:hidden"></span></a></li> + <li><a class="reference" href="#getchr," + title="getchr(): cint"><wbr />getchr<span class="attachedType" style="visibility:hidden"></span></a></li> + <li><a class="reference" href="#back,LineEditor,int" + title="back(ed: var LineEditor; n = 1)"><wbr />back<span class="attachedType" style="visibility:hidden">LineEditor</span></a></li> + <li><a class="reference" href="#forward,LineEditor,int" + title="forward(ed: var LineEditor; n = 1)"><wbr />forward<span class="attachedType" style="visibility:hidden">LineEditor</span></a></li> + <li><a class="reference" href="#deletePrevious,LineEditor" + title="deletePrevious(ed: var LineEditor)"><wbr />delete<wbr />Previous<span class="attachedType" style="visibility:hidden">LineEditor</span></a></li> + <li><a class="reference" href="#deleteNext,LineEditor" + title="deleteNext(ed: var LineEditor)"><wbr />delete<wbr />Next<span class="attachedType" style="visibility:hidden">LineEditor</span></a></li> + <li><a class="reference" href="#printChar,LineEditor,int" + title="printChar(ed: var LineEditor; c: int)"><wbr />print<wbr />Char<span class="attachedType" style="visibility:hidden">LineEditor</span></a></li> + <li><a class="reference" href="#changeLine,LineEditor,string" + title="changeLine(ed: var LineEditor; s: string)"><wbr />change<wbr />Line<span class="attachedType" style="visibility:hidden">LineEditor</span></a></li> + <li><a class="reference" href="#clearLine,LineEditor" + title="clearLine(ed: var LineEditor)"><wbr />clear<wbr />Line<span class="attachedType" style="visibility:hidden">LineEditor</span></a></li> + <li><a class="reference" href="#goToStart,LineEditor" + title="goToStart(ed: var LineEditor)"><wbr />go<wbr />To<wbr />Start<span class="attachedType" style="visibility:hidden">LineEditor</span></a></li> + <li><a class="reference" href="#goToEnd,LineEditor" + title="goToEnd(ed: var LineEditor)"><wbr />go<wbr />To<wbr />End<span class="attachedType" style="visibility:hidden">LineEditor</span></a></li> + <li><a class="reference" href="#historyInit,int,string" + title="historyInit(size = 256; file: string = nil): LineHistory"><wbr />history<wbr />Init<span class="attachedType" style="visibility:hidden">LineHistory</span></a></li> + <li><a class="reference" href="#historyAdd,LineEditor" + title="historyAdd(ed: var LineEditor; force = false)"><wbr />history<wbr />Add<span class="attachedType" style="visibility:hidden">LineEditor</span></a></li> + <li><a class="reference" href="#historyPrevious,LineEditor" + title="historyPrevious(ed: var LineEditor)"><wbr />history<wbr />Previous<span class="attachedType" style="visibility:hidden">LineEditor</span></a></li> + <li><a class="reference" href="#historyNext,LineEditor" + title="historyNext(ed: var LineEditor)"><wbr />history<wbr />Next<span class="attachedType" style="visibility:hidden">LineEditor</span></a></li> + <li><a class="reference" href="#historyFlush,LineEditor" + title="historyFlush(ed: var LineEditor)"><wbr />history<wbr />Flush<span class="attachedType" style="visibility:hidden">LineEditor</span></a></li> + <li><a class="reference" href="#completeLine,LineEditor" + title="completeLine(ed: var LineEditor): int"><wbr />complete<wbr />Line<span class="attachedType" style="visibility:hidden">LineEditor</span></a></li> + <li><a class="reference" href="#lineText,LineEditor" + title="lineText(ed: LineEditor): string"><wbr />line<wbr />Text<span class="attachedType" style="visibility:hidden">LineEditor</span></a></li> + <li><a class="reference" href="#initEditor,int,string" + title="initEditor(mode = mdInsert; historySize = 256; historyFile: string = nil): LineEditor"><wbr />init<wbr />Editor<span class="attachedType" style="visibility:hidden">LineEditor</span></a></li> + <li><a class="reference" href="#readLine,LineEditor,string" + title="readLine(ed: var LineEditor; prompt = &quot;&quot;; hidechars = false): string"><wbr />read<wbr />Line<span class="attachedType" style="visibility:hidden">LineEditor</span></a></li> + <li><a class="reference" href="#password,LineEditor,string" + title="password(ed: var LineEditor; prompt = &quot;&quot;): string"><wbr />password<span class="attachedType" style="visibility:hidden">LineEditor</span></a></li> + + </ul> +</li> + +</ul> + + </div> + <div class="nine columns" id="content"> + <div id="tocRoot"></div> + <p class="module-desc">This module provides a simple, limited but fully-functional line editing library written in pure Nim.</p> + <div class="section" id="6"> +<h1><a class="toc-backref" href="#6">Imports</a></h1> +<dl class="item"> +<a class="reference external" href="critbits.html">critbits</a>, <a class="reference external" href="terminal.html">terminal</a>, <a class="reference external" href="deques.html">deques</a>, <a class="reference external" href="sequtils.html">sequtils</a>, <a class="reference external" href="strutils.html">strutils</a>, <a class="reference external" href="os.html">os</a> +</dl></div> +<div class="section" id="7"> +<h1><a class="toc-backref" href="#7">Types</a></h1> +<dl class="item"> +<dt id="Key"><a name="Key"></a><pre><span class="Identifier">Key</span> <span class="Other">=</span> <span class="Identifier">int</span></pre></dt> +<dd> +The ASCII code of a keyboard key. + +</dd> +<dt id="KeySeq"><a name="KeySeq"></a><pre><span class="Identifier">KeySeq</span> <span class="Other">=</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">Key</span><span class="Other">]</span></pre></dt> +<dd> +A sequence of one or more Keys. + +</dd> +<dt id="KeyCallback"><a name="KeyCallback"></a><pre><span class="Identifier">KeyCallback</span> <span class="Other">=</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">ed</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">LineEditor</span><span class="Other">)</span></pre></dt> +<dd> +A proc to call that can modify the LineEditor. + +</dd> +<dt id="LineError"><a name="LineError"></a><pre><span class="Identifier">LineError</span> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Identifier">Exception</span></pre></dt> +<dd> +A generic nimline error. + +</dd> +<dt id="LineEditorError"><a name="LineEditorError"></a><pre><span class="Identifier">LineEditorError</span> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Identifier">Exception</span></pre></dt> +<dd> +An error occured in the LineEditor. + +</dd> +<dt id="LineEditorMode"><a name="LineEditorMode"></a><pre><span class="Identifier">LineEditorMode</span> <span class="Other">=</span> <span class="Keyword">enum</span> + <span class="Identifier">mdInsert</span><span class="Other">,</span> <span class="Identifier">mdReplace</span></pre></dt> +<dd> +The <em>mode</em> a LineEditor operates in (insert or replace). + +</dd> +<dt id="Line"><a name="Line"></a><pre><span class="Identifier">Line</span> <span class="Other">=</span> <span class="Keyword">object</span> + <span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span> + <span class="Identifier">position</span><span class="Other">:</span> <span class="Identifier">int</span> +</pre></dt> +<dd> +An object representing a line of text. + +</dd> +<dt id="LineHistory"><a name="LineHistory"></a><pre><span class="Identifier">LineHistory</span> <span class="Other">=</span> <span class="Keyword">object</span> + <span class="Identifier">file</span><span class="Other">:</span> <span class="Identifier">string</span> + <span class="Identifier">tainted</span><span class="Other">:</span> <span class="Identifier">bool</span> + <span class="Identifier">position</span><span class="Other">:</span> <span class="Identifier">int</span> + <span class="Identifier">queue</span><span class="Other">:</span> <span class="Identifier">Deque</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> + <span class="Identifier">max</span><span class="Other">:</span> <span class="Identifier">int</span> +</pre></dt> +<dd> +An object representing the history of all commands typed in a LineEditor. + +</dd> +<dt id="LineEditor"><a name="LineEditor"></a><pre><span class="Identifier">LineEditor</span> <span class="Other">=</span> <span class="Keyword">object</span> + <span class="Identifier">completionCallback</span><span class="Operator">*</span><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">ed</span><span class="Other">:</span> <span class="Identifier">LineEditor</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> + <span class="Identifier">history</span><span class="Other">:</span> <span class="Identifier">LineHistory</span> + <span class="Identifier">line</span><span class="Other">:</span> <span class="Identifier">Line</span> + <span class="Identifier">mode</span><span class="Other">:</span> <span class="Identifier">LineEditorMode</span> +</pre></dt> +<dd> +An object representing a line editor, used to process text typed in the terminal. + +</dd> + +</dl></div> +<div class="section" id="8"> +<h1><a class="toc-backref" href="#8">Vars</a></h1> +<dl class="item"> +<dt id="KEYNAMES"><a name="KEYNAMES"></a><pre><span class="Identifier">KEYNAMES</span><span class="Other">:</span> <span class="Identifier">array</span><span class="Other">[</span><span class="DecNumber">0</span> <span class="Operator">..</span> <span class="DecNumber">31</span><span class="Other">,</span> <span class="Identifier">string</span><span class="Other">]</span></pre></dt> +<dd> + + +</dd> +<dt id="KEYSEQS"><a name="KEYSEQS"></a><pre><span class="Identifier">KEYSEQS</span><span class="Other">:</span> <span class="Identifier">CritBitTree</span><span class="Other">[</span><span class="Identifier">KeySeq</span><span class="Other">]</span></pre></dt> +<dd> + + +</dd> +<dt id="KEYMAP"><a name="KEYMAP"></a><pre><span class="Identifier">KEYMAP</span><span class="Other">:</span> <span class="Identifier">CritBitTree</span><span class="Other">[</span><span class="Identifier">KeyCallback</span><span class="Other">]</span></pre></dt> +<dd> + + +</dd> + +</dl></div> +<div class="section" id="10"> +<h1><a class="toc-backref" href="#10">Consts</a></h1> +<dl class="item"> +<dt id="CTRL"><a name="CTRL"></a><pre><span class="Identifier">CTRL</span> <span class="Other">=</span> <span class="Other">{</span><span class="DecNumber">0</span><span class="Other">..</span><span class="DecNumber">31</span><span class="Other">}</span></pre></dt> +<dd> +Control characters. + +</dd> +<dt id="DIGIT"><a name="DIGIT"></a><pre><span class="Identifier">DIGIT</span> <span class="Other">=</span> <span class="Other">{</span><span class="DecNumber">48</span><span class="Other">..</span><span class="DecNumber">57</span><span class="Other">}</span></pre></dt> +<dd> +Digits. + +</dd> +<dt id="LETTER"><a name="LETTER"></a><pre><span class="Identifier">LETTER</span> <span class="Other">=</span> <span class="Other">{</span><span class="DecNumber">65</span><span class="Other">..</span><span class="DecNumber">122</span><span class="Other">}</span></pre></dt> +<dd> +Letters. + +</dd> +<dt id="UPPERLETTER"><a name="UPPERLETTER"></a><pre><span class="Identifier">UPPERLETTER</span> <span class="Other">=</span> <span class="Other">{</span><span class="DecNumber">65</span><span class="Other">..</span><span class="DecNumber">90</span><span class="Other">}</span></pre></dt> +<dd> +Uppercase letters. + +</dd> +<dt id="LOWERLETTER"><a name="LOWERLETTER"></a><pre><span class="Identifier">LOWERLETTER</span> <span class="Other">=</span> <span class="Other">{</span><span class="DecNumber">97</span><span class="Other">..</span><span class="DecNumber">122</span><span class="Other">}</span></pre></dt> +<dd> +Lowercase letters. + +</dd> +<dt id="PRINTABLE"><a name="PRINTABLE"></a><pre><span class="Identifier">PRINTABLE</span> <span class="Other">=</span> <span class="Other">{</span><span class="DecNumber">32</span><span class="Other">..</span><span class="DecNumber">126</span><span class="Other">}</span></pre></dt> +<dd> +Printable characters. + +</dd> +<dt id="ESCAPES"><a name="ESCAPES"></a><pre><span class="Identifier">ESCAPES</span> <span class="Other">=</span> <span class="Other">{</span><span class="DecNumber">27</span><span class="Other">}</span></pre></dt> +<dd> +Escape characters. + +</dd> + +</dl></div> +<div class="section" id="12"> +<h1><a class="toc-backref" href="#12">Procs</a></h1> +<dl class="item"> +<dt id="putchr"><a name="putchr,cint"></a><pre><span class="Keyword">proc</span> <span class="Identifier">putchr</span><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <span class="Identifier">cint</span><span class="Other">)</span> <span class="Other pragmabegin">{.</span><div 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="Identifier">WriteIOEffect</span><span class="Other">]</span></div><span class="Other pragmaend">.}</span></pre></dt> +<dd> +Prints an ASCII character to stdout. + +</dd> +<dt id="getchr"><a name="getchr,"></a><pre><span class="Keyword">proc</span> <span class="Identifier">getchr</span><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">cint</span> <span class="Other pragmabegin">{.</span><div 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></div><span class="Other pragmaend">.}</span></pre></dt> +<dd> +Retrieves an ASCII character from stdin. + +</dd> +<dt id="back"><a name="back,LineEditor,int"></a><pre><span class="Keyword">proc</span> <span class="Identifier">back</span><span class="Other">(</span><span class="Identifier">ed</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">LineEditor</span><span class="Other">;</span> <span class="Identifier">n</span> <span class="Other">=</span> <span class="DecNumber">1</span><span class="Other">)</span> <span class="Other pragmabegin">{.</span><div class="pragma"><span class="Identifier">raises</span><span class="Other">:</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">WriteIOEffect</span><span class="Other">]</span></div><span class="Other pragmaend">.}</span></pre></dt> +<dd> +Move the cursor back by <strong>n</strong> characters on the current line (unless the beginning of the line is reached). + +</dd> +<dt id="forward"><a name="forward,LineEditor,int"></a><pre><span class="Keyword">proc</span> <span class="Identifier">forward</span><span class="Other">(</span><span class="Identifier">ed</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">LineEditor</span><span class="Other">;</span> <span class="Identifier">n</span> <span class="Other">=</span> <span class="DecNumber">1</span><span class="Other">)</span> <span class="Other pragmabegin">{.</span><div class="pragma"><span class="Identifier">raises</span><span class="Other">:</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">WriteIOEffect</span><span class="Other">]</span></div><span class="Other pragmaend">.}</span></pre></dt> +<dd> +Move the cursor forward by <strong>n</strong> characters on the current line (unless the beginning of the line is reached). + +</dd> +<dt id="deletePrevious"><a name="deletePrevious,LineEditor"></a><pre><span class="Keyword">proc</span> <span class="Identifier">deletePrevious</span><span class="Other">(</span><span class="Identifier">ed</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">LineEditor</span><span class="Other">)</span> <span class="Other pragmabegin">{.</span><div class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">LineError</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">WriteIOEffect</span><span class="Other">]</span></div><span class="Other pragmaend">.}</span></pre></dt> +<dd> +Move the cursor to the left by one character (unless at the beginning of the line) and delete the existing character, if any. + +</dd> +<dt id="deleteNext"><a name="deleteNext,LineEditor"></a><pre><span class="Keyword">proc</span> <span class="Identifier">deleteNext</span><span class="Other">(</span><span class="Identifier">ed</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">LineEditor</span><span class="Other">)</span> <span class="Other pragmabegin">{.</span><div class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">LineError</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">WriteIOEffect</span><span class="Other">]</span></div><span class="Other pragmaend">.}</span></pre></dt> +<dd> +Move the cursor to the right by one character (unless at the end of the line) and delete the existing character, if any. + +</dd> +<dt id="printChar"><a name="printChar,LineEditor,int"></a><pre><span class="Keyword">proc</span> <span class="Identifier">printChar</span><span class="Other">(</span><span class="Identifier">ed</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">LineEditor</span><span class="Other">;</span> <span class="Identifier">c</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span> <span class="Other pragmabegin">{.</span><div class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">LineError</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">WriteIOEffect</span><span class="Other">]</span></div><span class="Other pragmaend">.}</span></pre></dt> +<dd> +Prints the character <strong>c</strong> to the current line. If in the middle of the line, the following characters are shifted right or replaced depending on the editor mode. + +</dd> +<dt id="changeLine"><a name="changeLine,LineEditor,string"></a><pre><span class="Keyword">proc</span> <span class="Identifier">changeLine</span><span class="Other">(</span><span class="Identifier">ed</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">LineEditor</span><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span> <span class="Other pragmabegin">{.</span><div class="pragma"><span class="Identifier">raises</span><span class="Other">:</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">WriteIOEffect</span><span class="Other">]</span></div><span class="Other pragmaend">.}</span></pre></dt> +<dd> +Replaces the contents of the current line with the string <strong>s</strong>. + +</dd> +<dt id="clearLine"><a name="clearLine,LineEditor"></a><pre><span class="Keyword">proc</span> <span class="Identifier">clearLine</span><span class="Other">(</span><span class="Identifier">ed</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">LineEditor</span><span class="Other">)</span> <span class="Other pragmabegin">{.</span><div class="pragma"><span class="Identifier">raises</span><span class="Other">:</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">WriteIOEffect</span><span class="Other">]</span></div><span class="Other pragmaend">.}</span></pre></dt> +<dd> +Clears the contents of the current line and reset the cursor position to the beginning of the line. + +</dd> +<dt id="goToStart"><a name="goToStart,LineEditor"></a><pre><span class="Keyword">proc</span> <span class="Identifier">goToStart</span><span class="Other">(</span><span class="Identifier">ed</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">LineEditor</span><span class="Other">)</span> <span class="Other pragmabegin">{.</span><div 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="Identifier">WriteIOEffect</span><span class="Other">]</span></div><span class="Other pragmaend">.}</span></pre></dt> +<dd> +Move the cursor to the beginning of the line. + +</dd> +<dt id="goToEnd"><a name="goToEnd,LineEditor"></a><pre><span class="Keyword">proc</span> <span class="Identifier">goToEnd</span><span class="Other">(</span><span class="Identifier">ed</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">LineEditor</span><span class="Other">)</span> <span class="Other pragmabegin">{.</span><div class="pragma"><span class="Identifier">raises</span><span class="Other">:</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">WriteIOEffect</span><span class="Other">]</span></div><span class="Other pragmaend">.}</span></pre></dt> +<dd> +Move the cursor to the end of the line. + +</dd> +<dt id="historyInit"><a name="historyInit,int,string"></a><pre><span class="Keyword">proc</span> <span class="Identifier">historyInit</span><span class="Other">(</span><span class="Identifier">size</span> <span class="Other">=</span> <span class="DecNumber">256</span><span class="Other">;</span> <span class="Identifier">file</span><span class="Other">:</span> <span class="Identifier">string</span> <span class="Other">=</span> <span class="Keyword">nil</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">LineHistory</span> <span class="Other pragmabegin">{.</span><div class="pragma"> + <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">AssertionError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">IndexError</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">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">]</span></div><span class="Other pragmaend">.}</span></pre></dt> +<dd> +Creates a new <strong>LineHistory</strong> object with the specified <strong>size</strong> and <strong>file</strong>. + +</dd> +<dt id="historyAdd"><a name="historyAdd,LineEditor"></a><pre><span class="Keyword">proc</span> <span class="Identifier">historyAdd</span><span class="Other">(</span><span class="Identifier">ed</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">LineEditor</span><span class="Other">;</span> <span class="Identifier">force</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">)</span> <span class="Other pragmabegin">{.</span><div class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">IndexError</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">WriteIOEffect</span><span class="Other">]</span></div><span class="Other pragmaend">.}</span></pre></dt> +<dd> +Adds the current editor line to the history. If <strong>force</strong> is set to <strong>true</strong>, the line will be added even if it's blank. + +</dd> +<dt id="historyPrevious"><a name="historyPrevious,LineEditor"></a><pre><span class="Keyword">proc</span> <span class="Identifier">historyPrevious</span><span class="Other">(</span><span class="Identifier">ed</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">LineEditor</span><span class="Other">)</span> <span class="Other pragmabegin">{.</span><div class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">IndexError</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">WriteIOEffect</span><span class="Other">]</span></div><span class="Other pragmaend">.}</span></pre></dt> +<dd> +Replaces the contents of the current line with the previous line stored in the history (if any). The current line will be added to the history and the hisory will be marked as <em>tainted</em>. + +</dd> +<dt id="historyNext"><a name="historyNext,LineEditor"></a><pre><span class="Keyword">proc</span> <span class="Identifier">historyNext</span><span class="Other">(</span><span class="Identifier">ed</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">LineEditor</span><span class="Other">)</span> <span class="Other pragmabegin">{.</span><div class="pragma"><span class="Identifier">raises</span><span class="Other">:</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">WriteIOEffect</span><span class="Other">]</span></div><span class="Other pragmaend">.}</span></pre></dt> +<dd> +Replaces the contents of the current line with the following line stored in the history (if any). + +</dd> +<dt id="historyFlush"><a name="historyFlush,LineEditor"></a><pre><span class="Keyword">proc</span> <span class="Identifier">historyFlush</span><span class="Other">(</span><span class="Identifier">ed</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">LineEditor</span><span class="Other">)</span> <span class="Other pragmabegin">{.</span><div 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></div><span class="Other pragmaend">.}</span></pre></dt> +<dd> +If there is at least one entry in the history, it sets the position of the cursor to the last element and sets the <strong>tainted</strong> flag to <strong>false</strong>. + +</dd> +<dt id="completeLine"><a name="completeLine,LineEditor"></a><pre><span class="Keyword">proc</span> <span class="Identifier">completeLine</span><span class="Other">(</span><span class="Identifier">ed</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">LineEditor</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</span> <span class="Other pragmabegin">{.</span><div 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">AssertionError</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">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">]</span></div><span class="Other pragmaend">.}</span></pre></dt> +<dd> +<p>If a <strong>completionCallback</strong> proc has been specified for the current editor, attempts to auto-complete the current line by running <strong>completionProc</strong> to return a list of possible values. It is possible to cycle through the matches by pressing the same key that triggered this proc.</p> +<p>The matches provided will be filtered based on the contents of the line when this proc was first triggered. If a match starts with the contents of the line, it will be displayed.</p> +<p>The following is a real-world example of a <strong>completionCallback</strong> used to complete the last word on the line with valid file paths.</p> +<pre class="listing"><span class="Keyword">import</span> <span class="Identifier">sequtils</span><span class="Punctuation">,</span> <span class="Identifier">strutils</span><span class="Punctuation">,</span> <span class="Identifier">ospath</span> + +<span class="Identifier">editor</span><span class="Operator">.</span><span class="Identifier">completionCallback</span> <span class="Operator">=</span> <span class="Keyword">proc</span><span class="Punctuation">(</span><span class="Identifier">ed</span><span class="Punctuation">:</span> <span class="Identifier">LineEditor</span><span class="Punctuation">)</span><span class="Punctuation">:</span> <span class="Identifier">seq</span><span class="Punctuation">[</span><span class="Identifier">string</span><span class="Punctuation">]</span> <span class="Operator">=</span> + <span class="Keyword">var</span> <span class="Identifier">words</span> <span class="Operator">=</span> <span class="Identifier">ed</span><span class="Operator">.</span><span class="Identifier">lineText</span><span class="Operator">.</span><span class="Identifier">split</span><span class="Punctuation">(</span><span class="StringLit">&quot; &quot;</span><span class="Punctuation">)</span> + <span class="Keyword">var</span> <span class="Identifier">word</span><span class="Punctuation">:</span> <span class="Identifier">string</span> + <span class="Keyword">if</span> <span class="Identifier">words</span><span class="Operator">.</span><span class="Identifier">len</span> <span class="Operator">==</span> <span class="DecNumber">0</span><span class="Punctuation">:</span> + <span class="Identifier">word</span> <span class="Operator">=</span> <span class="Identifier">ed</span><span class="Operator">.</span><span class="Identifier">lineText</span> + <span class="Keyword">else</span><span class="Punctuation">:</span> + <span class="Identifier">word</span> <span class="Operator">=</span> <span class="Identifier">words</span><span class="Punctuation">[</span><span class="Identifier">words</span><span class="Operator">.</span><span class="Identifier">len</span><span class="Operator">-</span><span class="DecNumber">1</span><span class="Punctuation">]</span> + <span class="Keyword">var</span> <span class="Identifier">f</span> <span class="Operator">=</span> <span class="Identifier">word</span><span class="Punctuation">[</span><span class="FloatNumber">1.</span><span class="Operator">.^</span><span class="DecNumber">1</span><span class="Punctuation">]</span> + <span class="Keyword">if</span> <span class="Identifier">f</span> <span class="Operator">==</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">:</span> + <span class="Identifier">f</span> <span class="Operator">=</span> <span class="Identifier">getCurrentDir</span><span class="Punctuation">(</span><span class="Punctuation">)</span><span class="Operator">.</span><span class="Identifier">replace</span><span class="Punctuation">(</span><span class="StringLit">&quot;</span><span class="EscapeSequence">\\</span><span class="StringLit">&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;/&quot;</span><span class="Punctuation">)</span> + <span class="Keyword">return</span> <span class="Identifier">toSeq</span><span class="Punctuation">(</span><span class="Identifier">walkDir</span><span class="Punctuation">(</span><span class="Identifier">f</span><span class="Punctuation">,</span> <span class="Identifier">true</span><span class="Punctuation">)</span><span class="Punctuation">)</span> + <span class="Operator">.</span><span class="Identifier">mapIt</span><span class="Punctuation">(</span><span class="StringLit">&quot;</span><span class="EscapeSequence">\&quot;</span><span class="StringLit">$1&quot;</span> <span class="Operator">%</span> <span class="Identifier">it</span><span class="Operator">.</span><span class="Identifier">path</span><span class="Operator">.</span><span class="Identifier">replace</span><span class="Punctuation">(</span><span class="StringLit">&quot;</span><span class="EscapeSequence">\\</span><span class="StringLit">&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;/&quot;</span><span class="Punctuation">)</span><span class="Punctuation">)</span> + <span class="Keyword">elif</span> <span class="Identifier">f</span><span class="Operator">.</span><span class="Identifier">dirExists</span><span class="Punctuation">:</span> + <span class="Identifier">f</span> <span class="Operator">=</span> <span class="Identifier">f</span><span class="Operator">.</span><span class="Identifier">replace</span><span class="Punctuation">(</span><span class="StringLit">&quot;</span><span class="EscapeSequence">\\</span><span class="StringLit">&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;/&quot;</span><span class="Punctuation">)</span> + <span class="Keyword">if</span> <span class="Identifier">f</span><span class="Punctuation">[</span><span class="Identifier">f</span><span class="Operator">.</span><span class="Identifier">len</span><span class="Operator">-</span><span class="DecNumber">1</span><span class="Punctuation">]</span> <span class="Operator">!=</span> <span class="CharLit">'/'</span><span class="Punctuation">:</span> + <span class="Identifier">f</span> <span class="Operator">=</span> <span class="Identifier">f</span> <span class="Operator">&amp;</span> <span class="StringLit">&quot;/&quot;</span> + <span class="Keyword">return</span> <span class="Identifier">toSeq</span><span class="Punctuation">(</span><span class="Identifier">walkDir</span><span class="Punctuation">(</span><span class="Identifier">f</span><span class="Punctuation">,</span> <span class="Identifier">true</span><span class="Punctuation">)</span><span class="Punctuation">)</span> + <span class="Operator">.</span><span class="Identifier">mapIt</span><span class="Punctuation">(</span><span class="StringLit">&quot;</span><span class="EscapeSequence">\&quot;</span><span class="StringLit">$1$2&quot;</span> <span class="Operator">%</span> <span class="Punctuation">[</span><span class="Identifier">f</span><span class="Punctuation">,</span> <span class="Identifier">it</span><span class="Operator">.</span><span class="Identifier">path</span><span class="Operator">.</span><span class="Identifier">replace</span><span class="Punctuation">(</span><span class="StringLit">&quot;</span><span class="EscapeSequence">\\</span><span class="StringLit">&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;/&quot;</span><span class="Punctuation">)</span><span class="Punctuation">]</span><span class="Punctuation">)</span> + <span class="Keyword">else</span><span class="Punctuation">:</span> + <span class="Keyword">var</span> <span class="Identifier">dir</span><span class="Punctuation">:</span> <span class="Identifier">string</span> + <span class="Keyword">if</span> <span class="Identifier">f</span><span class="Operator">.</span><span class="Identifier">contains</span><span class="Punctuation">(</span><span class="StringLit">&quot;/&quot;</span><span class="Punctuation">)</span> <span class="Keyword">or</span> <span class="Identifier">dir</span><span class="Operator">.</span><span class="Identifier">contains</span><span class="Punctuation">(</span><span class="StringLit">&quot;</span><span class="EscapeSequence">\\</span><span class="StringLit">&quot;</span><span class="Punctuation">)</span><span class="Punctuation">:</span> + <span class="Identifier">dir</span> <span class="Operator">=</span> <span class="Identifier">f</span><span class="Operator">.</span><span class="Identifier">parentDir</span> + <span class="Keyword">let</span> <span class="Identifier">file</span> <span class="Operator">=</span> <span class="Identifier">f</span><span class="Operator">.</span><span class="Identifier">extractFileName</span> + <span class="Keyword">return</span> <span class="Identifier">toSeq</span><span class="Punctuation">(</span><span class="Identifier">walkDir</span><span class="Punctuation">(</span><span class="Identifier">dir</span><span class="Punctuation">,</span> <span class="Identifier">true</span><span class="Punctuation">)</span><span class="Punctuation">)</span> + <span class="Operator">.</span><span class="Identifier">filterIt</span><span class="Punctuation">(</span><span class="Identifier">it</span><span class="Operator">.</span><span class="Identifier">path</span><span class="Operator">.</span><span class="Identifier">toLowerAscii</span><span class="Operator">.</span><span class="Identifier">startsWith</span><span class="Punctuation">(</span><span class="Identifier">file</span><span class="Operator">.</span><span class="Identifier">toLowerAscii</span><span class="Punctuation">)</span><span class="Punctuation">)</span> + <span class="Operator">.</span><span class="Identifier">mapIt</span><span class="Punctuation">(</span><span class="StringLit">&quot;</span><span class="EscapeSequence">\&quot;</span><span class="StringLit">$1/$2&quot;</span> <span class="Operator">%</span> <span class="Punctuation">[</span><span class="Identifier">dir</span><span class="Punctuation">,</span> <span class="Identifier">it</span><span class="Operator">.</span><span class="Identifier">path</span><span class="Operator">.</span><span class="Identifier">replace</span><span class="Punctuation">(</span><span class="StringLit">&quot;</span><span class="EscapeSequence">\\</span><span class="StringLit">&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;/&quot;</span><span class="Punctuation">)</span><span class="Punctuation">]</span><span class="Punctuation">)</span> + <span class="Keyword">else</span><span class="Punctuation">:</span> + <span class="Identifier">dir</span> <span class="Operator">=</span> <span class="Identifier">getCurrentDir</span><span class="Punctuation">(</span><span class="Punctuation">)</span> + <span class="Keyword">return</span> <span class="Identifier">toSeq</span><span class="Punctuation">(</span><span class="Identifier">walkDir</span><span class="Punctuation">(</span><span class="Identifier">dir</span><span class="Punctuation">,</span> <span class="Identifier">true</span><span class="Punctuation">)</span><span class="Punctuation">)</span> + <span class="Operator">.</span><span class="Identifier">filterIt</span><span class="Punctuation">(</span><span class="Identifier">it</span><span class="Operator">.</span><span class="Identifier">path</span><span class="Operator">.</span><span class="Identifier">toLowerAscii</span><span class="Operator">.</span><span class="Identifier">startsWith</span><span class="Punctuation">(</span><span class="Identifier">f</span><span class="Operator">.</span><span class="Identifier">toLowerAscii</span><span class="Punctuation">)</span><span class="Punctuation">)</span> + <span class="Operator">.</span><span class="Identifier">mapIt</span><span class="Punctuation">(</span><span class="StringLit">&quot;</span><span class="EscapeSequence">\&quot;</span><span class="StringLit">$1&quot;</span> <span class="Operator">%</span> <span class="Punctuation">[</span><span class="Identifier">it</span><span class="Operator">.</span><span class="Identifier">path</span><span class="Operator">.</span><span class="Identifier">replace</span><span class="Punctuation">(</span><span class="StringLit">&quot;</span><span class="EscapeSequence">\\</span><span class="StringLit">&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;/&quot;</span><span class="Punctuation">)</span><span class="Punctuation">]</span><span class="Punctuation">)</span></pre> + +</dd> +<dt id="lineText"><a name="lineText,LineEditor"></a><pre><span class="Keyword">proc</span> <span class="Identifier">lineText</span><span class="Other">(</span><span class="Identifier">ed</span><span class="Other">:</span> <span class="Identifier">LineEditor</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> <span class="Other pragmabegin">{.</span><div 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></div><span class="Other pragmaend">.}</span></pre></dt> +<dd> +Returns the contents of the current line. + +</dd> +<dt id="initEditor"><a name="initEditor,int,string"></a><pre><span class="Keyword">proc</span> <span class="Identifier">initEditor</span><span class="Other">(</span><span class="Identifier">mode</span> <span class="Other">=</span> <span class="Identifier">mdInsert</span><span class="Other">;</span> <span class="Identifier">historySize</span> <span class="Other">=</span> <span class="DecNumber">256</span><span class="Other">;</span> <span class="Identifier">historyFile</span><span class="Other">:</span> <span class="Identifier">string</span> <span class="Other">=</span> <span class="Keyword">nil</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">LineEditor</span> <span class="Other pragmabegin">{.</span><div class="pragma"> + <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">AssertionError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">IndexError</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">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">]</span></div><span class="Other pragmaend">.}</span></pre></dt> +<dd> +Creates a <strong>LineEditor</strong> object. + +</dd> +<dt id="readLine"><a name="readLine,LineEditor,string"></a><pre><span class="Keyword">proc</span> <span class="Identifier">readLine</span><span class="Other">(</span><span class="Identifier">ed</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">LineEditor</span><span class="Other">;</span> <span class="Identifier">prompt</span> <span class="Other">=</span> <span class="StringLit">&quot;&quot;</span><span class="Other">;</span> <span class="Identifier">hidechars</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> <span class="Other pragmabegin">{.</span><div class="pragma"> + <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">IndexError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">AssertionError</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">WriteIOEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span></div><span class="Other pragmaend">.}</span></pre></dt> +<dd> +<p>High-level proc to be used instead of <strong>stdin.readLine</strong> to read a line from standard input using the specified <strong>LineEditor</strong> object.</p> +<p>Note that:</p> +<ul class="simple"><li><strong>prompt</strong> is a string (that <em>cannot</em> contain escape codes, so it cannot be colored) that will be prepended at the start of the line and not included in the contents of the line itself.</li> +<li>If <strong>hidechars</strong> is set to <strong>true</strong>, asterisks will be printed to stdout instead of the characters entered by the user.</li> +</ul> + + +</dd> +<dt id="password"><a name="password,LineEditor,string"></a><pre><span class="Keyword">proc</span> <span class="Identifier">password</span><span class="Other">(</span><span class="Identifier">ed</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">LineEditor</span><span class="Other">;</span> <span class="Identifier">prompt</span> <span class="Other">=</span> <span class="StringLit">&quot;&quot;</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> <span class="Other pragmabegin">{.</span><div class="pragma"> + <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">IndexError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">AssertionError</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">WriteIOEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span></div><span class="Other pragmaend">.}</span></pre></dt> +<dd> +Convenience method to use instead of readline to hide the characters inputed by the user. + +</dd> + +</dl></div> + + </div> +</div> + + <div class="row"> + <div class="twelve-columns footer"> + <span class="nim-sprite"></span> + <br/> + <small>Made with Nim. Generated: 2018-08-12 20:53:08 UTC</small> + </div> + </div> + </div> +</div> + +</body> +</html>