about summary refs log tree commit diff stats
path: root/html/061text.mu.html
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2016-12-26 20:44:10 -0800
committerKartik K. Agaram <vc@akkartik.com>2016-12-26 20:58:37 -0800
commit201458e3bd2f1d79a0ea0b853552e9df267e92b1 (patch)
tree0a4f13662cde7f92ae0bcf641c9733e2a0fcd6ef /html/061text.mu.html
parente35c2d6857e1ed916221faae707e3c53ff8ed042 (diff)
downloadmu-201458e3bd2f1d79a0ea0b853552e9df267e92b1.tar.gz
3713 - cross-link calls with definitions in html
Diffstat (limited to 'html/061text.mu.html')
-rw-r--r--html/061text.mu.html152
1 files changed, 76 insertions, 76 deletions
diff --git a/html/061text.mu.html b/html/061text.mu.html
index bde24f55..ecae0b15 100644
--- a/html/061text.mu.html
+++ b/pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
#
#
#            Nimrod's Runtime Library
#        (c) Copyright 2010 Andreas Rumpf
#
#    See the file "copying.txt", included in this
#    distribution, for details about the copyright.
#

type
  TccState {.pure, final.} = object
  PccState* = ptr TccState
  
  TErrorFunc* = proc (opaque: pointer, msg: cstring) {.cdecl.}

proc openCCState*(): PccState {.importc: "tcc_new", cdecl.}
  ## create a new TCC compilation context

proc closeCCState*(s: PccState) {.importc: "tcc_delete", cdecl.}
  ## free a TCC compilation context

proc enableDebug*(s: PccState) {.importc: "tcc_enable_debug", cdecl.}
  ## add debug information in the generated code

proc setErrorFunc*(s: PccState, errorOpaque: pointer, errorFun: TErrorFunc) {.
  cdecl, importc: "tcc_set_error_func".}
  ## set error/warning display callback

proc setWarning*(s: PccState, warningName: cstring, value: int) {.cdecl,
  importc: "tcc_set_warning".}
  ## set/reset a warning

# preprocessor 

proc addIncludePath*(s: PccState, pathname: cstring) {.cdecl, 
  importc: "tcc_add_include_path".}
  ## add include path

proc addSysincludePath*(s: PccState, pathname: cstring) {.cdecl, 
  importc: "tcc_add_sysinclude_path".}
  ## add in system include path


proc defineSymbol*(s: PccState, sym, value: cstring) {.cdecl, 
  importc: "tcc_define_symbol".}
  ## define preprocessor symbol 'sym'. Can put optional value

proc undefineSymbol*(s: PccState, sym: cstring) {.cdecl, 
  importc: "tcc_undefine_symbol".}
  ## undefine preprocess symbol 'sym'

# compiling 

proc addFile*(s: PccState, filename: cstring): cint {.cdecl, 
  importc: "tcc_add_file".}
  ## add a file (either a C file, dll, an object, a library or an ld
  ## script). Return -1 if error.

proc compileString*(s: PccState, buf: cstring): cint {.cdecl, 
  importc: "tcc_compile_string".}
  ## compile a string containing a C source. Return non zero if error.

# linking commands


const
  OutputMemory*: cint = 0 ## output will be ran in memory (no
                          ## output file) (default)
  OutputExe*: cint = 1 ## executable file
  OutputDll*: cint = 2 ## dynamic library
  OutputObj*: cint = 3 ## object file
  OutputPreprocess*: cint = 4 ## preprocessed file (used internally)
  
  OutputFormatElf*: cint = 0 ## default output format: ELF
  OutputFormatBinary*: cint = 1 ## binary image output
  OutputFormatCoff*: cint = 2 ## COFF

proc setOutputType*(s: PCCState, outputType: cint): cint {.cdecl, 
  importc: "tcc_set_output_type".}
  ## set output type. MUST BE CALLED before any compilation

proc addLibraryPath*(s: PccState, pathname: cstring): cint {.cdecl,
  importc: "tcc_add_library_path".}
  ## equivalent to -Lpath option

proc addLibrary*(s: PCCState, libraryname: cstring): cint {.cdecl,
  importc: "tcc_add_library".}
  ## the library name is the same as the argument of the '-l' option

proc addSymbol*(s: PccState, name: cstring, val: pointer): cint {.cdecl,
  importc: "tcc_add_symbol".}
  ## add a symbol to the compiled program

proc outputFile*(s: PccState, filename: cstring): cint {.cdecl,
  importc: "tcc_output_file".}
  ## output an executable, library or object file. DO NOT call
  ## tcc_relocate() before.

proc run*(s: PccState, argc: cint, argv: cstringArray): cint {.cdecl,
  importc: "tcc_run".}
  ## link and run main() function and return its value. DO NOT call
  ## tcc_relocate() before.

proc relocate*(s: PccState, p: pointer): cint {.cdecl,
  importc: "tcc_relocate".}
  ## copy code into memory passed in by the caller and do all relocations
  ## (needed before using tcc_get_symbol()).
  ## returns -1 on error and required size if ptr is NULL

proc getSymbol*(s: PccState, name: cstring): pointer {.cdecl,
  importc: "tcc_get_symbol".}
  ## return symbol value or NULL if not found

proc setLibPath*(s: PccState, path: cstring) {.cdecl,
  importc: "tcc_set_lib_path".}
  ## set CONFIG_TCCDIR at runtime
  
lt;/span>s:text [ <span id="L446" class="LineNr"> 446 </span> <span class="Constant">local-scope</span> <span id="L447" class="LineNr"> 447 </span> <span class="Constant">load-ingredients</span> <span id="L448" class="LineNr"> 448 </span> len:num <span class="Special">&lt;-</span> length *s @@ -509,14 +509,14 @@ if ('onhashchange' in window) { <span id="L451" class="LineNr"> 451 </span> <span class="muControl">return-if</span> done? <span id="L452" class="LineNr"> 452 </span> *s <span class="Special">&lt;-</span> put-index *s, i, newc <span id="L453" class="LineNr"> 453 </span> i <span class="Special">&lt;-</span> add i,<span class="Constant"> 1</span> -<span id="L454" class="LineNr"> 454 </span> s <span class="Special">&lt;-</span> replace s, oldc, newc, i +<span id="L454" class="LineNr"> 454 </span> s <span class="Special">&lt;-</span> <a href='061text.mu.html#L445'>replace</a> s, oldc, newc, i <span id="L455" class="LineNr"> 455 </span>] <span id="L456" class="LineNr"> 456 </span> <span id="L457" class="LineNr"> 457 </span><span class="muScenario">scenario</span> replace-character-at-start [ <span id="L458" class="LineNr"> 458 </span> <span class="Constant">local-scope</span> <span id="L459" class="LineNr"> 459 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[abc]</span> <span id="L460" class="LineNr"> 460 </span> run [ -<span id="L461" class="LineNr"> 461 </span> x <span class="Special">&lt;-</span> replace x, <span class="Constant">97/a</span>, <span class="Constant">122/z</span> +<span id="L461" class="LineNr"> 461 </span> x <span class="Special">&lt;-</span> <a href='061text.mu.html#L445'>replace</a> x, <span class="Constant">97/a</span>, <span class="Constant">122/z</span> <span id="L462" class="LineNr"> 462 </span> 10:@:char/<span class="Special">raw</span> <span class="Special">&lt;-</span> copy *x <span id="L463" class="LineNr"> 463 </span> ] <span id="L464" class="LineNr"> 464 </span> memory-should-contain [ @@ -528,7 +528,7 @@ if ('onhashchange' in window) { <span id="L470" class="LineNr"> 470 </span> <span class="Constant">local-scope</span> <span id="L471" class="LineNr"> 471 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[abc]</span> <span id="L472" class="LineNr"> 472 </span> run [ -<span id="L473" class="LineNr"> 473 </span> x <span class="Special">&lt;-</span> replace x, <span class="Constant">99/c</span>, <span class="Constant">122/z</span> +<span id="L473" class="LineNr"> 473 </span> x <span class="Special">&lt;-</span> <a href='061text.mu.html#L445'>replace</a> x, <span class="Constant">99/c</span>, <span class="Constant">122/z</span> <span id="L474" class="LineNr"> 474 </span> 10:@:char/<span class="Special">raw</span> <span class="Special">&lt;-</span> copy *x <span id="L475" class="LineNr"> 475 </span> ] <span id="L476" class="LineNr"> 476 </span> memory-should-contain [ @@ -540,7 +540,7 @@ if ('onhashchange' in window) { <span id="L482" class="LineNr"> 482 </span> <span class="Constant">local-scope</span> <span id="L483" class="LineNr"> 483 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[abc]</span> <span id="L484" class="LineNr"> 484 </span> run [ -<span id="L485" class="LineNr"> 485 </span> x <span class="Special">&lt;-</span> replace x, <span class="Constant">100/d</span>, <span class="Constant">122/z</span> +<span id="L485" class="LineNr"> 485 </span> x <span class="Special">&lt;-</span> <a href='061text.mu.html#L445'>replace</a> x, <span class="Constant">100/d</span>, <span class="Constant">122/z</span> <span id="L486" class="LineNr"> 486 </span> 10:@:char/<span class="Special">raw</span> <span class="Special">&lt;-</span> copy *x <span id="L487" class="LineNr"> 487 </span> ] <span id="L488" class="LineNr"> 488 </span> memory-should-contain [ @@ -552,7 +552,7 @@ if ('onhashchange' in window) { <span id="L494" class="LineNr"> 494 </span> <span class="Constant">local-scope</span> <span id="L495" class="LineNr"> 495 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[banana]</span> <span id="L496" class="LineNr"> 496 </span> run [ -<span id="L497" class="LineNr"> 497 </span> x <span class="Special">&lt;-</span> replace x, <span class="Constant">97/a</span>, <span class="Constant">122/z</span> +<span id="L497" class="LineNr"> 497 </span> x <span class="Special">&lt;-</span> <a href='061text.mu.html#L445'>replace</a> x, <span class="Constant">97/a</span>, <span class="Constant">122/z</span> <span id="L498" class="LineNr"> 498 </span> 10:@:char/<span class="Special">raw</span> <span class="Special">&lt;-</span> copy *x <span id="L499" class="LineNr"> 499 </span> ] <span id="L500" class="LineNr"> 500 </span> memory-should-contain [ @@ -561,7 +561,7 @@ if ('onhashchange' in window) { <span id="L503" class="LineNr"> 503 </span>] <span id="L504" class="LineNr"> 504 </span> <span id="L505" class="LineNr"> 505 </span><span class="Comment"># replace underscores in first with remaining args</span> -<span id="L506" class="LineNr"> 506 </span><span class="muRecipe">def</span> interpolate template:text<span class="muRecipe"> -&gt; </span>result:text [ +<span id="L506" class="LineNr"> 506 </span><span class="muRecipe">def</span> <a href='061text.mu.html#L506'>interpolate</a> template:text<span class="muRecipe"> -&gt; </span>result:text [ <span id="L507" class="LineNr"> 507 </span> <span class="Constant">local-scope</span> <span id="L508" class="LineNr"> 508 </span> <span class="Constant">load-ingredients</span> <span class="Comment"># consume just the template</span> <span id="L509" class="LineNr"> 509 </span> <span class="Comment"># compute result-len, space to allocate for result</span> @@ -639,7 +639,7 @@ if ('onhashchange' in window) { <span id="L581" class="LineNr"> 581 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[abc_ghi]</span> <span id="L582" class="LineNr"> 582 </span> y:text <span class="Special">&lt;-</span> new <span class="Constant">[def]</span> <span id="L583" class="LineNr"> 583 </span> run [ -<span id="L584" class="LineNr"> 584 </span> z:text <span class="Special">&lt;-</span> interpolate x, y +<span id="L584" class="LineNr"> 584 </span> z:text <span class="Special">&lt;-</span> <a href='061text.mu.html#L506'>interpolate</a> x, y <span id="L585" class="LineNr"> 585 </span> 10:@:char/<span class="Special">raw</span> <span class="Special">&lt;-</span> copy *z <span id="L586" class="LineNr"> 586 </span> ] <span id="L587" class="LineNr"> 587 </span> memory-should-contain [ @@ -652,7 +652,7 @@ if ('onhashchange' in window) { <span id="L594" class="LineNr"> 594 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[_, hello!]</span> <span id="L595" class="LineNr"> 595 </span> y:text <span class="Special">&lt;-</span> new <span class="Constant">[abc]</span> <span id="L596" class="LineNr"> 596 </span> run [ -<span id="L597" class="LineNr"> 597 </span> z:text <span class="Special">&lt;-</span> interpolate x, y +<span id="L597" class="LineNr"> 597 </span> z:text <span class="Special">&lt;-</span> <a href='061text.mu.html#L506'>interpolate</a> x, y <span id="L598" class="LineNr"> 598 </span> 10:@:char/<span class="Special">raw</span> <span class="Special">&lt;-</span> copy *z <span id="L599" class="LineNr"> 599 </span> ] <span id="L600" class="LineNr"> 600 </span> memory-should-contain [ @@ -666,7 +666,7 @@ if ('onhashchange' in window) { <span id="L608" class="LineNr"> 608 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[hello, _]</span> <span id="L609" class="LineNr"> 609 </span> y:text <span class="Special">&lt;-</span> new <span class="Constant">[abc]</span> <span id="L610" class="LineNr"> 610 </span> run [ -<span id="L611" class="LineNr"> 611 </span> z:text <span class="Special">&lt;-</span> interpolate x, y +<span id="L611" class="LineNr"> 611 </span> z:text <span class="Special">&lt;-</span> <a href='061text.mu.html#L506'>interpolate</a> x, y <span id="L612" class="LineNr"> 612 </span> 10:@:char/<span class="Special">raw</span> <span class="Special">&lt;-</span> copy *z <span id="L613" class="LineNr"> 613 </span> ] <span id="L614" class="LineNr"> 614 </span> memory-should-contain [ @@ -675,7 +675,7 @@ if ('onhashchange' in window) { <span id="L617" class="LineNr"> 617 </span>] <span id="L618" class="LineNr"> 618 </span> <span id="L619" class="LineNr"> 619 </span><span class="Comment"># result:bool &lt;- space? c:char</span> -<span id="L620" class="LineNr"> 620 </span><span class="muRecipe">def</span> space? c:char<span class="muRecipe"> -&gt; </span>result:bool [ +<span id="L620" class="LineNr"> 620 </span><span class="muRecipe">def</span> <a href='061text.mu.html#L620'>space?</a> c:char<span class="muRecipe"> -&gt; </span>result:bool [ <span id="L621" class="LineNr"> 621 </span> <span class="Constant">local-scope</span> <span id="L622" class="LineNr"> 622 </span> <span class="Constant">load-ingredients</span> <span id="L623" class="LineNr"> 623 </span> <span class="Comment"># most common case first</span> @@ -736,7 +736,7 @@ if ('onhashchange' in window) { <span id="L678" class="LineNr"> 678 </span> result <span class="Special">&lt;-</span> equal c, <span class="Constant">12288/ideographic-space</span> <span id="L679" class="LineNr"> 679 </span>] <span id="L680" class="LineNr"> 680 </span> -<span id="L681" class="LineNr"> 681 </span><span class="muRecipe">def</span> trim s:text<span class="muRecipe"> -&gt; </span>result:text [ +<span id="L681" class="LineNr"> 681 </span><span class="muRecipe">def</span> <a href='061text.mu.html#L681'>trim</a> s:text<span class="muRecipe"> -&gt; </span>result:text [ <span id="L682" class="LineNr"> 682 </span> <span class="Constant">local-scope</span> <span id="L683" class="LineNr"> 683 </span> <span class="Constant">load-ingredients</span> <span id="L684" class="LineNr"> 684 </span> len:num <span class="Special">&lt;-</span> length *s @@ -750,7 +750,7 @@ if ('onhashchange' in window) { <span id="L692" class="LineNr"> 692 </span> <span class="muControl">return</span> <span id="L693" class="LineNr"> 693 </span> <span class="Delimiter">}</span> <span id="L694" class="LineNr"> 694 </span> curr:char <span class="Special">&lt;-</span> index *s, start -<span id="L695" class="LineNr"> 695 </span> whitespace?:bool <span class="Special">&lt;-</span> space? curr +<span id="L695" class="LineNr"> 695 </span> whitespace?:bool <span class="Special">&lt;-</span> <a href='061text.mu.html#L620'>space?</a> curr <span id="L696" class="LineNr"> 696 </span> <span class="muControl">break-unless</span> whitespace? <span id="L697" class="LineNr"> 697 </span> start <span class="Special">&lt;-</span> add start,<span class="Constant"> 1</span> <span id="L698" class="LineNr"> 698 </span> <span class="muControl">loop</span> @@ -761,7 +761,7 @@ if ('onhashchange' in window) { <span id="L703" class="LineNr"> 703 </span> not-at-start?:bool <span class="Special">&lt;-</span> greater-than end, start <span id="L704" class="LineNr"> 704 </span> assert not-at-start?, <span class="Constant">[end ran up against start]</span> <span id="L705" class="LineNr"> 705 </span> curr:char <span class="Special">&lt;-</span> index *s, end -<span id="L706" class="LineNr"> 706 </span> whitespace?:bool <span class="Special">&lt;-</span> space? curr +<span id="L706" class="LineNr"> 706 </span> whitespace?:bool <span class="Special">&lt;-</span> <a href='061text.mu.html#L620'>space?</a> curr <span id="L707" class="LineNr"> 707 </span> <span class="muControl">break-unless</span> whitespace? <span id="L708" class="LineNr"> 708 </span> end <span class="Special">&lt;-</span> subtract end,<span class="Constant"> 1</span> <span id="L709" class="LineNr"> 709 </span> <span class="muControl">loop</span> @@ -789,7 +789,7 @@ if ('onhashchange' in window) { <span id="L731" class="LineNr"> 731 </span> <span class="Constant">local-scope</span> <span id="L732" class="LineNr"> 732 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[abc]</span> <span id="L733" class="LineNr"> 733 </span> run [ -<span id="L734" class="LineNr"> 734 </span> y:text <span class="Special">&lt;-</span> trim x +<span id="L734" class="LineNr"> 734 </span> y:text <span class="Special">&lt;-</span> <a href='061text.mu.html#L681'>trim</a> x <span id="L735" class="LineNr"> 735 </span> 1:@:char/<span class="Special">raw</span> <span class="Special">&lt;-</span> copy *y <span id="L736" class="LineNr"> 736 </span> ] <span id="L737" class="LineNr"> 737 </span> memory-should-contain [ @@ -801,7 +801,7 @@ if ('onhashchange' in window) { <span id="L743" class="LineNr"> 743 </span> <span class="Constant">local-scope</span> <span id="L744" class="LineNr"> 744 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[ abc]</span> <span id="L745" class="LineNr"> 745 </span> run [ -<span id="L746" class="LineNr"> 746 </span> y:text <span class="Special">&lt;-</span> trim x +<span id="L746" class="LineNr"> 746 </span> y:text <span class="Special">&lt;-</span> <a href='061text.mu.html#L681'>trim</a> x <span id="L747" class="LineNr"> 747 </span> 1:@:char/<span class="Special">raw</span> <span class="Special">&lt;-</span> copy *y <span id="L748" class="LineNr"> 748 </span> ] <span id="L749" class="LineNr"> 749 </span> memory-should-contain [ @@ -813,7 +813,7 @@ if ('onhashchange' in window) { <span id="L755" class="LineNr"> 755 </span> <span class="Constant">local-scope</span> <span id="L756" class="LineNr"> 756 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[abc ]</span> <span id="L757" class="LineNr"> 757 </span> run [ -<span id="L758" class="LineNr"> 758 </span> y:text <span class="Special">&lt;-</span> trim x +<span id="L758" class="LineNr"> 758 </span> y:text <span class="Special">&lt;-</span> <a href='061text.mu.html#L681'>trim</a> x <span id="L759" class="LineNr"> 759 </span> 1:@:char/<span class="Special">raw</span> <span class="Special">&lt;-</span> copy *y <span id="L760" class="LineNr"> 760 </span> ] <span id="L761" class="LineNr"> 761 </span> memory-should-contain [ @@ -825,7 +825,7 @@ if ('onhashchange' in window) { <span id="L767" class="LineNr"> 767 </span> <span class="Constant">local-scope</span> <span id="L768" class="LineNr"> 768 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[ abc ]</span> <span id="L769" class="LineNr"> 769 </span> run [ -<span id="L770" class="LineNr"> 770 </span> y:text <span class="Special">&lt;-</span> trim x +<span id="L770" class="LineNr"> 770 </span> y:text <span class="Special">&lt;-</span> <a href='061text.mu.html#L681'>trim</a> x <span id="L771" class="LineNr"> 771 </span> 1:@:char/<span class="Special">raw</span> <span class="Special">&lt;-</span> copy *y <span id="L772" class="LineNr"> 772 </span> ] <span id="L773" class="LineNr"> 773 </span> memory-should-contain [ @@ -838,7 +838,7 @@ if ('onhashchange' in window) { <span id="L780" class="LineNr"> 780 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[ abc</span> <span id="L781" class="LineNr"> 781 </span><span class="Constant">]</span> <span id="L782" class="LineNr"> 782 </span> run [ -<span id="L783" class="LineNr"> 783 </span> y:text <span class="Special">&lt;-</span> trim x +<span id="L783" class="LineNr"> 783 </span> y:text <span class="Special">&lt;-</span> <a href='061text.mu.html#L681'>trim</a> x <span id="L784" class="LineNr"> 784 </span> 1:@:char/<span class="Special">raw</span> <span class="Special">&lt;-</span> copy *y <span id="L785" class="LineNr"> 785 </span> ] <span id="L786" class="LineNr"> 786 </span> memory-should-contain [ @@ -962,7 +962,7 @@ if ('onhashchange' in window) { <span id="L904" class="LineNr"> 904 </span> <span class="Comment"># does some unnecessary work checking even when there isn't enough of text left</span> <span id="L905" class="LineNr"> 905 </span> done?:bool <span class="Special">&lt;-</span> greater-or-equal idx, len <span id="L906" class="LineNr"> 906 </span> <span class="muControl">break-if</span> done? -<span id="L907" class="LineNr"> 907 </span> found?:bool <span class="Special">&lt;-</span> match-at text, pattern, idx +<span id="L907" class="LineNr"> 907 </span> found?:bool <span class="Special">&lt;-</span> <a href='061text.mu.html#L978'>match-at</a> text, pattern, idx <span id="L908" class="LineNr"> 908 </span> <span class="muControl">break-if</span> found? <span id="L909" class="LineNr"> 909 </span> idx <span class="Special">&lt;-</span> add idx,<span class="Constant"> 1</span> <span id="L910" class="LineNr"> 910 </span> <span class="Comment"># optimization: skip past indices that definitely won't match</span> @@ -1033,7 +1033,7 @@ if ('onhashchange' in window) { <span id="L975" class="LineNr"> 975 </span>] <span id="L976" class="LineNr"> 976 </span> <span id="L977" class="LineNr"> 977 </span><span class="Comment"># checks if pattern matches at index 'idx'</span> -<span id="L978" class="LineNr"> 978 </span><span class="muRecipe">def</span> match-at text:text, pattern:text, idx:num<span class="muRecipe"> -&gt; </span>result:bool [ +<span id="L978" class="LineNr"> 978 </span><span class="muRecipe">def</span> <a href='061text.mu.html#L978'>match-at</a> text:text, pattern:text, idx:num<span class="muRecipe"> -&gt; </span>result:bool [ <span id="L979" class="LineNr"> 979 </span> <span class="Constant">local-scope</span> <span id="L980" class="LineNr"> 980 </span> <span class="Constant">load-ingredients</span> <span id="L981" class="LineNr"> 981 </span> pattern-len:num <span class="Special">&lt;-</span> length *pattern @@ -1069,7 +1069,7 @@ if ('onhashchange' in window) { <span id="L1011" class="LineNr">1011 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[abc]</span> <span id="L1012" class="LineNr">1012 </span> y:text <span class="Special">&lt;-</span> new <span class="Constant">[ab]</span> <span id="L1013" class="LineNr">1013 </span> run [ -<span id="L1014" class="LineNr">1014 </span> 10:bool/<span class="Special">raw</span> <span class="Special">&lt;-</span> match-at x, y,<span class="Constant"> 0</span> +<span id="L1014" class="LineNr">1014 </span> 10:bool/<span class="Special">raw</span> <span class="Special">&lt;-</span> <a href='061text.mu.html#L978'>match-at</a> x, y,<span class="Constant"> 0</span> <span id="L1015" class="LineNr">1015 </span> ] <span id="L1016" class="LineNr">1016 </span> memory-should-contain [ <span id="L1017" class="LineNr">1017 </span> <span class="Constant"> 10</span> <span class="Special">&lt;-</span><span class="Constant"> 1</span> <span class="Comment"># match found</span> @@ -1080,7 +1080,7 @@ if ('onhashchange' in window) { <span id="L1022" class="LineNr">1022 </span> <span class="Constant">local-scope</span> <span id="L1023" class="LineNr">1023 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[abc]</span> <span id="L1024" class="LineNr">1024 </span> run [ -<span id="L1025" class="LineNr">1025 </span> 10:bool/<span class="Special">raw</span> <span class="Special">&lt;-</span> match-at x, x,<span class="Constant"> 0</span> +<span id="L1025" class="LineNr">1025 </span> 10:bool/<span class="Special">raw</span> <span class="Special">&lt;-</span> <a href='061text.mu.html#L978'>match-at</a> x, x,<span class="Constant"> 0</span> <span id="L1026" class="LineNr">1026 </span> ] <span id="L1027" class="LineNr">1027 </span> memory-should-contain [ <span id="L1028" class="LineNr">1028 </span> <span class="Constant"> 10</span> <span class="Special">&lt;-</span><span class="Constant"> 1</span> <span class="Comment"># match found</span> @@ -1092,7 +1092,7 @@ if ('onhashchange' in window) { <span id="L1034" class="LineNr">1034 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[abc]</span> <span id="L1035" class="LineNr">1035 </span> y:text <span class="Special">&lt;-</span> new <span class="Constant">[a]</span> <span id="L1036" class="LineNr">1036 </span> run [ -<span id="L1037" class="LineNr">1037 </span> 10:bool/<span class="Special">raw</span> <span class="Special">&lt;-</span> match-at x, y,<span class="Constant"> 4</span> +<span id="L1037" class="LineNr">1037 </span> 10:bool/<span class="Special">raw</span> <span class="Special">&lt;-</span> <a href='061text.mu.html#L978'>match-at</a> x, y,<span class="Constant"> 4</span> <span id="L1038" class="LineNr">1038 </span> ] <span id="L1039" class="LineNr">1039 </span> memory-should-contain [ <span id="L1040" class="LineNr">1040 </span> <span class="Constant"> 10</span> <span class="Special">&lt;-</span><span class="Constant"> 0</span> <span class="Comment"># never matches</span> @@ -1104,7 +1104,7 @@ if ('onhashchange' in window) { <span id="L1046" class="LineNr">1046 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[abc]</span> <span id="L1047" class="LineNr">1047 </span> y:text <span class="Special">&lt;-</span> new <span class="Constant">[]</span> <span id="L1048" class="LineNr">1048 </span> run [ -<span id="L1049" class="LineNr">1049 </span> 10:bool/<span class="Special">raw</span> <span class="Special">&lt;-</span> match-at x, y,<span class="Constant"> 0</span> +<span id="L1049" class="LineNr">1049 </span> 10:bool/<span class="Special">raw</span> <span class="Special">&lt;-</span> <a href='061text.mu.html#L978'>match-at</a> x, y,<span class="Constant"> 0</span> <span id="L1050" class="LineNr">1050 </span> ] <span id="L1051" class="LineNr">1051 </span> memory-should-contain [ <span id="L1052" class="LineNr">1052 </span> <span class="Constant"> 10</span> <span class="Special">&lt;-</span><span class="Constant"> 1</span> <span class="Comment"># always matches empty pattern given a valid index</span> @@ -1116,7 +1116,7 @@ if ('onhashchange' in window) { <span id="L1058" class="LineNr">1058 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[abc]</span> <span id="L1059" class="LineNr">1059 </span> y:text <span class="Special">&lt;-</span> new <span class="Constant">[]</span> <span id="L1060" class="LineNr">1060 </span> run [ -<span id="L1061" class="LineNr">1061 </span> 10:bool/<span class="Special">raw</span> <span class="Special">&lt;-</span> match-at x, y,<span class="Constant"> 4</span> +<span id="L1061" class="LineNr">1061 </span> 10:bool/<span class="Special">raw</span> <span class="Special">&lt;-</span> <a href='061text.mu.html#L978'>match-at</a> x, y,<span class="Constant"> 4</span> <span id="L1062" class="LineNr">1062 </span> ] <span id="L1063" class="LineNr">1063 </span> memory-should-contain [ <span id="L1064" class="LineNr">1064 </span> <span class="Constant"> 10</span> <span class="Special">&lt;-</span><span class="Constant"> 0</span> <span class="Comment"># no match</span> @@ -1128,7 +1128,7 @@ if ('onhashchange' in window) { <span id="L1070" class="LineNr">1070 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[]</span> <span id="L1071" class="LineNr">1071 </span> y:text <span class="Special">&lt;-</span> new <span class="Constant">[abc]</span> <span id="L1072" class="LineNr">1072 </span> run [ -<span id="L1073" class="LineNr">1073 </span> 10:bool/<span class="Special">raw</span> <span class="Special">&lt;-</span> match-at x, y,<span class="Constant"> 0</span> +<span id="L1073" class="LineNr">1073 </span> 10:bool/<span class="Special">raw</span> <span class="Special">&lt;-</span> <a href='061text.mu.html#L978'>match-at</a> x, y,<span class="Constant"> 0</span> <span id="L1074" class="LineNr">1074 </span> ] <span id="L1075" class="LineNr">1075 </span> memory-should-contain [ <span id="L1076" class="LineNr">1076 </span> <span class="Constant"> 10</span> <span class="Special">&lt;-</span><span class="Constant"> 0</span> <span class="Comment"># no match</span> @@ -1139,7 +1139,7 @@ if ('onhashchange' in window) { <span id="L1081" class="LineNr">1081 </span> <span class="Constant">local-scope</span> <span id="L1082" class="LineNr">1082 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[]</span> <span id="L1083" class="LineNr">1083 </span> run [ -<span id="L1084" class="LineNr">1084 </span> 10:bool/<span class="Special">raw</span> <span class="Special">&lt;-</span> match-at x, x,<span class="Constant"> 0</span> +<span id="L1084" class="LineNr">1084 </span> 10:bool/<span class="Special">raw</span> <span class="Special">&lt;-</span> <a href='061text.mu.html#L978'>match-at</a> x, x,<span class="Constant"> 0</span> <span id="L1085" class="LineNr">1085 </span> ] <span id="L1086" class="LineNr">1086 </span> memory-should-contain [ <span id="L1087" class="LineNr">1087 </span> <span class="Constant"> 10</span> <span class="Special">&lt;-</span><span class="Constant"> 1</span> <span class="Comment"># matches because pattern is also empty</span> @@ -1151,7 +1151,7 @@ if ('onhashchange' in window) { <span id="L1093" class="LineNr">1093 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[abc]</span> <span id="L1094" class="LineNr">1094 </span> y:text <span class="Special">&lt;-</span> new <span class="Constant">[bc]</span> <span id="L1095" class="LineNr">1095 </span> run [ -<span id="L1096" class="LineNr">1096 </span> 10:bool/<span class="Special">raw</span> <span class="Special">&lt;-</span> match-at x, y,<span class="Constant"> 1</span> +<span id="L1096" class="LineNr">1096 </span> 10:bool/<span class="Special">raw</span> <span class="Special">&lt;-</span> <a href='061text.mu.html#L978'>match-at</a> x, y,<span class="Constant"> 1</span> <span id="L1097" class="LineNr">1097 </span> ] <span id="L1098" class="LineNr">1098 </span> memory-should-contain [ <span id="L1099" class="LineNr">1099 </span> <span class="Constant"> 10</span> <span class="Special">&lt;-</span><span class="Constant"> 1</span> <span class="Comment"># match</span> @@ -1163,14 +1163,14 @@ if ('onhashchange' in window) { <span id="L1105" class="LineNr">1105 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[abc]</span> <span id="L1106" class="LineNr">1106 </span> y:text <span class="Special">&lt;-</span> new <span class="Constant">[bc]</span> <span id="L1107" class="LineNr">1107 </span> run [ -<span id="L1108" class="LineNr">1108 </span> 10:bool/<span class="Special">raw</span> <span class="Special">&lt;-</span> match-at x, y,<span class="Constant"> 0</span> +<span id="L1108" class="LineNr">1108 </span> 10:bool/<span class="Special">raw</span> <span class="Special">&lt;-</span> <a href='061text.mu.html#L978'>match-at</a> x, y,<span class="Constant"> 0</span> <span id="L1109" class="LineNr">1109 </span> ] <span id="L1110" class="LineNr">1110 </span> memory-should-contain [ <span id="L1111" class="LineNr">1111 </span> <span class="Constant"> 10</span> <span class="Special">&lt;-</span><span class="Constant"> 0</span> <span class="Comment"># no match</span> <span id="L1112" class="LineNr">1112 </span> ] <span id="L1113" class="LineNr">1113 </span>] <span id="L1114" class="LineNr">1114 </span> -<span id="L1115" class="LineNr">1115 </span><span class="muRecipe">def</span> split s:text, delim:char<span class="muRecipe"> -&gt; </span>result:&amp;:@:text [ +<span id="L1115" class="LineNr">1115 </span><span class="muRecipe">def</span> <a href='061text.mu.html#L1115'>split</a> s:text, delim:char<span class="muRecipe"> -&gt; </span>result:&amp;:@:text [ <span id="L1116" class="LineNr">1116 </span> <span class="Constant">local-scope</span> <span id="L1117" class="LineNr">1117 </span> <span class="Constant">load-ingredients</span> <span id="L1118" class="LineNr">1118 </span> <span class="Comment"># empty text? return empty array</span> @@ -1203,7 +1203,7 @@ if ('onhashchange' in window) { <span id="L1145" class="LineNr">1145 </span> <span class="muControl">break-if</span> done? <span id="L1146" class="LineNr">1146 </span> end:num <span class="Special">&lt;-</span> find-next s, delim, start <span id="L1147" class="LineNr">1147 </span> <span class="Comment"># copy start..end into result[curr-result]</span> -<span id="L1148" class="LineNr">1148 </span> dest:text <span class="Special">&lt;-</span> copy-range s, start, end +<span id="L1148" class="LineNr">1148 </span> dest:text <span class="Special">&lt;-</span> <a href='061text.mu.html#L1279'>copy-range</a> s, start, end <span id="L1149" class="LineNr">1149 </span> *result <span class="Special">&lt;-</span> put-index *result, curr-result, dest <span id="L1150" class="LineNr">1150 </span> <span class="Comment"># slide over to next slice</span> <span id="L1151" class="LineNr">1151 </span> start <span class="Special">&lt;-</span> add end,<span class="Constant"> 1</span> @@ -1216,7 +1216,7 @@ if ('onhashchange' in window) { <span id="L1158" class="LineNr">1158 </span> <span class="Constant">local-scope</span> <span id="L1159" class="LineNr">1159 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[a/b]</span> <span id="L1160" class="LineNr">1160 </span> run [ -<span id="L1161" class="LineNr">1161 </span> y:&amp;:@:text <span class="Special">&lt;-</span> split x, <span class="Constant">47/slash</span> +<span id="L1161" class="LineNr">1161 </span> y:&amp;:@:text <span class="Special">&lt;-</span> <a href='061text.mu.html#L1115'>split</a> x, <span class="Constant">47/slash</span> <span id="L1162" class="LineNr">1162 </span> 10:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> length *y <span id="L1163" class="LineNr">1163 </span> a:text <span class="Special">&lt;-</span> index *y,<span class="Constant"> 0</span> <span id="L1164" class="LineNr">1164 </span> b:text <span class="Special">&lt;-</span> index *y,<span class="Constant"> 1</span> @@ -1234,7 +1234,7 @@ if ('onhashchange' in window) { <span id="L1176" class="LineNr">1176 </span> <span class="Constant">local-scope</span> <span id="L1177" class="LineNr">1177 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[a/b/c]</span> <span id="L1178" class="LineNr">1178 </span> run [ -<span id="L1179" class="LineNr">1179 </span> y:&amp;:@:text <span class="Special">&lt;-</span> split x, <span class="Constant">47/slash</span> +<span id="L1179" class="LineNr">1179 </span> y:&amp;:@:text <span class="Special">&lt;-</span> <a href='061text.mu.html#L1115'>split</a> x, <span class="Constant">47/slash</span> <span id="L1180" class="LineNr">1180 </span> 10:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> length *y <span id="L1181" class="LineNr">1181 </span> a:text <span class="Special">&lt;-</span> index *y,<span class="Constant"> 0</span> <span id="L1182" class="LineNr">1182 </span> b:text <span class="Special">&lt;-</span> index *y,<span class="Constant"> 1</span> @@ -1255,7 +1255,7 @@ if ('onhashchange' in window) { <span id="L1197" class="LineNr">1197 </span> <span class="Constant">local-scope</span> <span id="L1198" class="LineNr">1198 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[abc]</span> <span id="L1199" class="LineNr">1199 </span> run [ -<span id="L1200" class="LineNr">1200 </span> y:&amp;:@:text <span class="Special">&lt;-</span> split x, <span class="Constant">47/slash</span> +<span id="L1200" class="LineNr">1200 </span> y:&amp;:@:text <span class="Special">&lt;-</span> <a href='061text.mu.html#L1115'>split</a> x, <span class="Constant">47/slash</span> <span id="L1201" class="LineNr">1201 </span> 10:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> length *y <span id="L1202" class="LineNr">1202 </span> a:text <span class="Special">&lt;-</span> index *y,<span class="Constant"> 0</span> <span id="L1203" class="LineNr">1203 </span> 20:@:char/<span class="Special">raw</span> <span class="Special">&lt;-</span> copy *a @@ -1270,7 +1270,7 @@ if ('onhashchange' in window) { <span id="L1212" class="LineNr">1212 </span> <span class="Constant">local-scope</span> <span id="L1213" class="LineNr">1213 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[]</span> <span id="L1214" class="LineNr">1214 </span> run [ -<span id="L1215" class="LineNr">1215 </span> y:&amp;:@:text <span class="Special">&lt;-</span> split x, <span class="Constant">47/slash</span> +<span id="L1215" class="LineNr">1215 </span> y:&amp;:@:text <span class="Special">&lt;-</span> <a href='061text.mu.html#L1115'>split</a> x, <span class="Constant">47/slash</span> <span id="L1216" class="LineNr">1216 </span> 10:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> length *y <span id="L1217" class="LineNr">1217 </span> ] <span id="L1218" class="LineNr">1218 </span> memory-should-contain [ @@ -1282,7 +1282,7 @@ if ('onhashchange' in window) { <span id="L1224" class="LineNr">1224 </span> <span class="Constant">local-scope</span> <span id="L1225" class="LineNr">1225 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[a/b//c]</span> <span id="L1226" class="LineNr">1226 </span> run [ -<span id="L1227" class="LineNr">1227 </span> y:&amp;:@:text <span class="Special">&lt;-</span> split x:text, <span class="Constant">47/slash</span> +<span id="L1227" class="LineNr">1227 </span> y:&amp;:@:text <span class="Special">&lt;-</span> <a href='061text.mu.html#L1115'>split</a> x:text, <span class="Constant">47/slash</span> <span id="L1228" class="LineNr">1228 </span> 10:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> length *y <span id="L1229" class="LineNr">1229 </span> a:text <span class="Special">&lt;-</span> index *y,<span class="Constant"> 0</span> <span id="L1230" class="LineNr">1230 </span> b:text <span class="Special">&lt;-</span> index *y,<span class="Constant"> 1</span> @@ -1302,7 +1302,7 @@ if ('onhashchange' in window) { <span id="L1244" class="LineNr">1244 </span> ] <span id="L1245" class="LineNr">1245 </span>] <span id="L1246" class="LineNr">1246 </span> -<span id="L1247" class="LineNr">1247 </span><span class="muRecipe">def</span> split-first text:text, delim:char<span class="muRecipe"> -&gt; </span>x:text, y:text [ +<span id="L1247" class="LineNr">1247 </span><span class="muRecipe">def</span> <a href='061text.mu.html#L1247'>split-first</a> text:text, delim:char<span class="muRecipe"> -&gt; </span>x:text, y:text [ <span id="L1248" class="LineNr">1248 </span> <span class="Constant">local-scope</span> <span id="L1249" class="LineNr">1249 </span> <span class="Constant">load-ingredients</span> <span id="L1250" class="LineNr">1250 </span> <span class="Comment"># empty text? return empty texts</span> @@ -1315,16 +1315,16 @@ if ('onhashchange' in window) { <span id="L1257" class="LineNr">1257 </span> <span class="muControl">return</span> <span id="L1258" class="LineNr">1258 </span> <span class="Delimiter">}</span> <span id="L1259" class="LineNr">1259 </span> idx:num <span class="Special">&lt;-</span> find-next text, delim,<span class="Constant"> 0</span> -<span id="L1260" class="LineNr">1260 </span> x:text <span class="Special">&lt;-</span> copy-range text,<span class="Constant"> 0</span>, idx +<span id="L1260" class="LineNr">1260 </span> x:text <span class="Special">&lt;-</span> <a href='061text.mu.html#L1279'>copy-range</a> text,<span class="Constant"> 0</span>, idx <span id="L1261" class="LineNr">1261 </span> idx <span class="Special">&lt;-</span> add idx,<span class="Constant"> 1</span> -<span id="L1262" class="LineNr">1262 </span> y:text <span class="Special">&lt;-</span> copy-range text, idx, len +<span id="L1262" class="LineNr">1262 </span> y:text <span class="Special">&lt;-</span> <a href='061text.mu.html#L1279'>copy-range</a> text, idx, len <span id="L1263" class="LineNr">1263 </span>] <span id="L1264" class="LineNr">1264 </span> <span id="L1265" class="LineNr">1265 </span><span class="muScenario">scenario</span> text-split-first [ <span id="L1266" class="LineNr">1266 </span> <span class="Constant">local-scope</span> <span id="L1267" class="LineNr">1267 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[a/b]</span> <span id="L1268" class="LineNr">1268 </span> run [ -<span id="L1269" class="LineNr">1269 </span> y:text, z:text <span class="Special">&lt;-</span> split-first x, <span class="Constant">47/slash</span> +<span id="L1269" class="LineNr">1269 </span> y:text, z:text <span class="Special">&lt;-</span> <a href='061text.mu.html#L1247'>split-first</a> x, <span class="Constant">47/slash</span> <span id="L1270" class="LineNr">1270 </span> 10:@:char/<span class="Special">raw</span> <span class="Special">&lt;-</span> copy *y <span id="L1271" class="LineNr">1271 </span> 20:@:char/<span class="Special">raw</span> <span class="Special">&lt;-</span> copy *z <span id="L1272" class="LineNr">1272 </span> ] @@ -1334,7 +1334,7 @@ if ('onhashchange' in window) { <span id="L1276" class="LineNr">1276 </span> ] <span id="L1277" class="LineNr">1277 </span>] <span id="L1278" class="LineNr">1278 </span> -<span id="L1279" class="LineNr">1279 </span><span class="muRecipe">def</span> copy-range buf:text, start:num, end:num<span class="muRecipe"> -&gt; </span>result:text [ +<span id="L1279" class="LineNr">1279 </span><span class="muRecipe">def</span> <a href='061text.mu.html#L1279'>copy-range</a> buf:text, start:num, end:num<span class="muRecipe"> -&gt; </span>result:text [ <span id="L1280" class="LineNr">1280 </span> <span class="Constant">local-scope</span> <span id="L1281" class="LineNr">1281 </span> <span class="Constant">load-ingredients</span> <span id="L1282" class="LineNr">1282 </span> <span class="Comment"># if end is out of bounds, trim it</span> @@ -1361,7 +1361,7 @@ if ('onhashchange' in window) { <span id="L1303" class="LineNr">1303 </span> <span class="Constant">local-scope</span> <span id="L1304" class="LineNr">1304 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[abc]</span> <span id="L1305" class="LineNr">1305 </span> run [ -<span id="L1306" class="LineNr">1306 </span> y:text <span class="Special">&lt;-</span> copy-range x,<span class="Constant"> 1</span>,<span class="Constant"> 3</span> +<span id="L1306" class="LineNr">1306 </span> y:text <span class="Special">&lt;-</span> <a href='061text.mu.html#L1279'>copy-range</a> x,<span class="Constant"> 1</span>,<span class="Constant"> 3</span> <span id="L1307" class="LineNr">1307 </span> 1:@:char/<span class="Special">raw</span> <span class="Special">&lt;-</span> copy *y <span id="L1308" class="LineNr">1308 </span> ] <span id="L1309" class="LineNr">1309 </span> memory-should-contain [ @@ -1373,7 +1373,7 @@ if ('onhashchange' in window) { <span id="L1315" class="LineNr">1315 </span> <span class="Constant">local-scope</span> <span id="L1316" class="LineNr">1316 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[abc]</span> <span id="L1317" class="LineNr">1317 </span> run [ -<span id="L1318" class="LineNr">1318 </span> y:text <span class="Special">&lt;-</span> copy-range x,<span class="Constant"> 2</span>,<span class="Constant"> 4</span> +<span id="L1318" class="LineNr">1318 </span> y:text <span class="Special">&lt;-</span> <a href='061text.mu.html#L1279'>copy-range</a> x,<span class="Constant"> 2</span>,<span class="Constant"> 4</span> <span id="L1319" class="LineNr">1319 </span> 1:@:char/<span class="Special">raw</span> <span class="Special">&lt;-</span> copy *y <span id="L1320" class="LineNr">1320 </span> ] <span id="L1321" class="LineNr">1321 </span> memory-should-contain [ @@ -1385,7 +1385,7 @@ if ('onhashchange' in window) { <span id="L1327" class="LineNr">1327 </span> <span class="Constant">local-scope</span> <span id="L1328" class="LineNr">1328 </span> x:text <span class="Special">&lt;-</span> new <span class="Constant">[abc]</span> <span id="L1329" class="LineNr">1329 </span> run [ -<span id="L1330" class="LineNr">1330 </span> y:text <span class="Special">&lt;-</span> copy-range x,<span class="Constant"> 3</span>,<span class="Constant"> 3</span> +<span id="L1330" class="LineNr">1330 </span> y:text <span class="Special">&lt;-</span> <a href='061text.mu.html#L1279'>copy-range</a> x,<span class="Constant"> 3</span>,<span class="Constant"> 3</span> <span id="L1331" class="LineNr">1331 </span> 1:@:char/<span class="Special">raw</span> <span class="Special">&lt;-</span> copy *y <span id="L1332" class="LineNr">1332 </span> ] <span id="L1333" class="LineNr">1333 </span> memory-should-contain [ @@ -1393,7 +1393,7 @@ if ('onhashchange' in window) { <span id="L1335" class="LineNr">1335 </span> ] <span id="L1336" class="LineNr">1336 </span>] <span id="L1337" class="LineNr">1337 </span> -<span id="L1338" class="LineNr">1338 </span><span class="muRecipe">def</span> parse-whole-number in:text<span class="muRecipe"> -&gt; </span>out:num, error?:bool [ +<span id="L1338" class="LineNr">1338 </span><span class="muRecipe">def</span> <a href='061text.mu.html#L1338'>parse-whole-number</a> in:text<span class="muRecipe"> -&gt; </span>out:num, error?:bool [ <span id="L1339" class="LineNr">1339 </span> <span class="Constant">local-scope</span> <span id="L1340" class="LineNr">1340 </span> <span class="Constant">load-ingredients</span> <span id="L1341" class="LineNr">1341 </span> out <span class="Special">&lt;-</span> copy<span class="Constant"> 0</span> @@ -1405,7 +1405,7 @@ if ('onhashchange' in window) { <span id="L1347" class="LineNr">1347 </span> <span class="muControl">break-if</span> done? <span id="L1348" class="LineNr">1348 </span> c:char <span class="Special">&lt;-</span> index *in, i <span id="L1349" class="LineNr">1349 </span> x:num <span class="Special">&lt;-</span> character-to-code c -<span id="L1350" class="LineNr">1350 </span> digit:num, error?:bool <span class="Special">&lt;-</span> character-code-to-digit x +<span id="L1350" class="LineNr">1350 </span> digit:num, error?:bool <span class="Special">&lt;-</span> <a href='061text.mu.html#L1362'>character-code-to-digit</a> x <span id="L1351" class="LineNr">1351 </span> <span class="muControl">reply-if</span> error? <span id="L1352" class="LineNr">1352 </span> result <span class="Special">&lt;-</span> multiply result,<span class="Constant"> 10</span> <span id="L1353" class="LineNr">1353 </span> result <span class="Special">&lt;-</span> add result, digit @@ -1417,7 +1417,7 @@ if ('onhashchange' in window) { <span id="L1359" class="LineNr">1359 </span>] <span id="L1360" class="LineNr">1360 </span> <span id="L1361" class="LineNr">1361 </span><span class="Comment"># (contributed by Ella Couch)</span> -<span id="L1362" class="LineNr">1362 </span><span class="muRecipe">recipe</span> character-code-to-digit character-code:number<span class="muRecipe"> -&gt; </span>result:number, error?:boolean [ +<span id="L1362" class="LineNr">1362 </span><span class="muRecipe">recipe</span> <a href='061text.mu.html#L1362'>character-code-to-digit</a> character-code:number<span class="muRecipe"> -&gt; </span>result:number, error?:boolean [ <span id="L1363" class="LineNr">1363 </span> <span class="Constant">local-scope</span> <span id="L1364" class="LineNr">1364 </span> <span class="Constant">load-ingredients</span> <span id="L1365" class="LineNr">1365 </span> result <span class="Special">&lt;-</span> copy<span class="Constant"> 0</span> @@ -1432,7 +1432,7 @@ if ('onhashchange' in window) { <span id="L1374" class="LineNr">1374 </span> <span class="Constant">local-scope</span> <span id="L1375" class="LineNr">1375 </span> a:number <span class="Special">&lt;-</span> copy<span class="Constant"> 48</span> <span class="Comment"># character code for '0'</span> <span id="L1376" class="LineNr">1376 </span> run [ -<span id="L1377" class="LineNr">1377 </span> 10:number/<span class="Special">raw</span>, 11:boolean/<span class="Special">raw</span> <span class="Special">&lt;-</span> character-code-to-digit a +<span id="L1377" class="LineNr">1377 </span> 10:number/<span class="Special">raw</span>, 11:boolean/<span class="Special">raw</span> <span class="Special">&lt;-</span> <a href='061text.mu.html#L1362'>character-code-to-digit</a> a <span id="L1378" class="LineNr">1378 </span> ] <span id="L1379" class="LineNr">1379 </span> memory-should-contain [ <span id="L1380" class="LineNr">1380 </span> <span class="Constant"> 10</span> <span class="Special">&lt;-</span><span class="Constant"> 0</span> @@ -1444,7 +1444,7 @@ if ('onhashchange' in window) { <span id="L1386" class="LineNr">1386 </span> <span class="Constant">local-scope</span> <span id="L1387" class="LineNr">1387 </span> a:number <span class="Special">&lt;-</span> copy<span class="Constant"> 57</span> <span class="Comment"># character code for '9'</span> <span id="L1388" class="LineNr">1388 </span> run [ -<span id="L1389" class="LineNr">1389 </span> 1:number/<span class="Special">raw</span>, 2:boolean/<span class="Special">raw</span> <span class="Special">&lt;-</span> character-code-to-digit a +<span id="L1389" class="LineNr">1389 </span> 1:number/<span class="Special">raw</span>, 2:boolean/<span class="Special">raw</span> <span class="Special">&lt;-</span> <a href='061text.mu.html#L1362'>character-code-to-digit</a> a <span id="L1390" class="LineNr">1390 </span> ] <span id="L1391" class="LineNr">1391 </span> memory-should-contain [ <span id="L1392" class="LineNr">1392 </span> <span class="Constant"> 1</span> <span class="Special">&lt;-</span><span class="Constant"> 9</span> @@ -1456,7 +1456,7 @@ if ('onhashchange' in window) { <span id="L1398" class="LineNr">1398 </span> <span class="Constant">local-scope</span> <span id="L1399" class="LineNr">1399 </span> a:number <span class="Special">&lt;-</span> copy<span class="Constant"> 47</span> <span id="L1400" class="LineNr">1400 </span> run [ -<span id="L1401" class="LineNr">1401 </span> 10:number/<span class="Special">raw</span>, 11:boolean/<span class="Special">raw</span> <span class="Special">&lt;-</span> character-code-to-digit a +<span id="L1401" class="LineNr">1401 </span> 10:number/<span class="Special">raw</span>, 11:boolean/<span class="Special">raw</span> <span class="Special">&lt;-</span> <a href='061text.mu.html#L1362'>character-code-to-digit</a> a <span id="L1402" class="LineNr">1402 </span> ] <span id="L1403" class="LineNr">1403 </span> memory-should-contain [ <span id="L1404" class="LineNr">1404 </span> <span class="Constant"> 10</span> <span class="Special">&lt;-</span><span class="Constant"> 0</span> @@ -1468,7 +1468,7 @@ if ('onhashchange' in window) { <span id="L1410" class="LineNr">1410 </span> <span class="Constant">local-scope</span> <span id="L1411" class="LineNr">1411 </span> a:number <span class="Special">&lt;-</span> copy<span class="Constant"> 58</span> <span id="L1412" class="LineNr">1412 </span> run [ -<span id="L1413" class="LineNr">1413 </span> 10:number/<span class="Special">raw</span>, 11:boolean/<span class="Special">raw</span> <span class="Special">&lt;-</span> character-code-to-digit a +<span id="L1413" class="LineNr">1413 </span> 10:number/<span class="Special">raw</span>, 11:boolean/<span class="Special">raw</span> <span class="Special">&lt;-</span> <a href='061text.mu.html#L1362'>character-code-to-digit</a> a <span id="L1414" class="LineNr">1414 </span> ] <span id="L1415" class="LineNr">1415 </span> memory-should-contain [ <span id="L1416" class="LineNr">1416 </span> <span class="Constant"> 10</span> <span class="Special">&lt;-</span><span class="Constant"> 0</span>