diff options
Diffstat (limited to 'html/060string.mu.html')
-rw-r--r-- | html/060string.mu.html | 94 |
1 files changed, 83 insertions, 11 deletions
diff --git a/html/060string.mu.html b/html/060string.mu.html index 80c1c900..7a2126ff 100644 --- a/html/060string.mu.html +++ b/html/060string.mu.html @@ -13,14 +13,14 @@ pre { white-space: pre-wrap; font-family: monospace; color: #eeeeee; background-color: #080808; } body { font-family: monospace; color: #eeeeee; background-color: #080808; } * { font-size: 1.05em; } -.muControl { color: #c0a020; } .muRecipe { color: #ff8700; } -.Delimiter { color: #a04060; } -.CommentedCode { color: #6c6c6c; } +.muScenario { color: #00af00; } .Comment { color: #9090ff; } .Constant { color: #00a0a0; } .Special { color: #ff6060; } -.muScenario { color: #00af00; } +.CommentedCode { color: #6c6c6c; } +.Delimiter { color: #a04060; } +.muControl { color: #c0a020; } --> </style> @@ -42,13 +42,13 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; } b-len:number<span class="Special"> <- </span>length *b <span class="Comment"># compare lengths</span> <span class="Delimiter">{</span> - trace <span class="Constant">[string-equal]</span>, <span class="Constant">[comparing lengths]</span> + trace <span class="Constant">99</span>, <span class="Constant">[string-equal]</span>, <span class="Constant">[comparing lengths]</span> length-equal?:boolean<span class="Special"> <- </span>equal a-len, b-len <span class="muControl">break-if</span> length-equal? <span class="muControl">reply</span> <span class="Constant">0</span> <span class="Delimiter">}</span> <span class="Comment"># compare each corresponding character</span> - trace <span class="Constant">[string-equal]</span>, <span class="Constant">[comparing characters]</span> + trace <span class="Constant">99</span>, <span class="Constant">[string-equal]</span>, <span class="Constant">[comparing characters]</span> i:number<span class="Special"> <- </span>copy <span class="Constant">0</span> <span class="Delimiter">{</span> done?:boolean<span class="Special"> <- </span>greater-or-equal i, a-len @@ -184,7 +184,7 @@ container buffer [ <span class="muControl">reply</span> result ] -<span class="Comment"># in:address:buffer <- buffer-append in:address:buffer, c:character</span> +<span class="Comment"># in <- buffer-append in:address:buffer, c:character</span> <span class="muRecipe">recipe</span> buffer-append [ <span class="Constant">local-scope</span> in:address:buffer<span class="Special"> <- </span><span class="Constant">next-ingredient</span> @@ -286,7 +286,7 @@ container buffer [ negative?:boolean<span class="Special"> <- </span>lesser-than n, <span class="Constant">0</span> <span class="muControl">break-unless</span> negative? negate-result<span class="Special"> <- </span>copy <span class="Constant">1</span> - n<span class="Special"> <- </span>multiply n, -1 + n<span class="Special"> <- </span>multiply n, <span class="Constant">-1</span> <span class="Delimiter">}</span> <span class="Comment"># add digits from right to left into intermediate buffer</span> tmp:address:buffer<span class="Special"> <- </span>new-buffer <span class="Constant">30</span> @@ -374,7 +374,7 @@ container buffer [ <span class="muScenario">scenario</span> integer-to-decimal-digit-negative [ run [ - <span class="Constant">1</span>:address:array:character/<span class="Special">raw <- </span>integer-to-decimal-string -1 + <span class="Constant">1</span>:address:array:character/<span class="Special">raw <- </span>integer-to-decimal-string <span class="Constant">-1</span> <span class="Constant">2</span>:array:character/<span class="Special">raw <- </span>copy *<span class="Constant">1</span>:address:array:character/<span class="Special">raw</span> ] memory-should-contain [ @@ -438,6 +438,78 @@ container buffer [ ] ] +<span class="muScenario">scenario</span> replace-character-in-string [ + run [ + <span class="Constant">1</span>:address:array:character/<span class="Special">raw <- </span>new <span class="Constant">[abc]</span> + <span class="Constant">1</span>:address:array:character/<span class="Special">raw <- </span>string-replace <span class="Constant">1</span>:address:array:character/<span class="Special">raw</span>, <span class="Constant">98/b</span>, <span class="Constant">122/z</span> + <span class="Constant">2</span>:array:character/<span class="Special">raw <- </span>copy *<span class="Constant">1</span>:address:array:character/<span class="Special">raw</span> + ] + memory-should-contain [ + <span class="Constant">2</span>:string<span class="Special"> <- </span><span class="Constant">[azc]</span> + ] +] + +<span class="muRecipe">recipe</span> string-replace [ + <span class="Constant">local-scope</span> + s:address:array:character<span class="Special"> <- </span><span class="Constant">next-ingredient</span> + oldc:character<span class="Special"> <- </span><span class="Constant">next-ingredient</span> + newc:character<span class="Special"> <- </span><span class="Constant">next-ingredient</span> + from:number<span class="Special"> <- </span><span class="Constant">next-ingredient</span> + len:number<span class="Special"> <- </span>length *s + i:number<span class="Special"> <- </span>find-next s, oldc, from + done?:boolean<span class="Special"> <- </span>greater-or-equal i, len + <span class="muControl">reply-if</span> done?, s/same-as-ingredient:<span class="Constant">0</span> + dest:address:character<span class="Special"> <- </span>index-address *s, i + *dest<span class="Special"> <- </span>copy newc + i<span class="Special"> <- </span>add i, <span class="Constant">1</span> + s<span class="Special"> <- </span>string-replace s, oldc, newc, i + <span class="muControl">reply</span> s/same-as-ingredient:<span class="Constant">0</span> +] + +<span class="muScenario">scenario</span> replace-character-at-start [ + run [ + <span class="Constant">1</span>:address:array:character/<span class="Special">raw <- </span>new <span class="Constant">[abc]</span> + <span class="Constant">1</span>:address:array:character/<span class="Special">raw <- </span>string-replace <span class="Constant">1</span>:address:array:character/<span class="Special">raw</span>, <span class="Constant">97/a</span>, <span class="Constant">122/z</span> + <span class="Constant">2</span>:array:character/<span class="Special">raw <- </span>copy *<span class="Constant">1</span>:address:array:character/<span class="Special">raw</span> + ] + memory-should-contain [ + <span class="Constant">2</span>:string<span class="Special"> <- </span><span class="Constant">[zbc]</span> + ] +] + +<span class="muScenario">scenario</span> replace-character-at-end [ + run [ + <span class="Constant">1</span>:address:array:character/<span class="Special">raw <- </span>new <span class="Constant">[abc]</span> + <span class="Constant">1</span>:address:array:character/<span class="Special">raw <- </span>string-replace <span class="Constant">1</span>:address:array:character/<span class="Special">raw</span>, <span class="Constant">99/c</span>, <span class="Constant">122/z</span> + <span class="Constant">2</span>:array:character/<span class="Special">raw <- </span>copy *<span class="Constant">1</span>:address:array:character/<span class="Special">raw</span> + ] + memory-should-contain [ + <span class="Constant">2</span>:string<span class="Special"> <- </span><span class="Constant">[abz]</span> + ] +] + +<span class="muScenario">scenario</span> replace-character-missing [ + run [ + <span class="Constant">1</span>:address:array:character/<span class="Special">raw <- </span>new <span class="Constant">[abc]</span> + <span class="Constant">1</span>:address:array:character/<span class="Special">raw <- </span>string-replace <span class="Constant">1</span>:address:array:character/<span class="Special">raw</span>, <span class="Constant">100/d</span>, <span class="Constant">122/z</span> + <span class="Constant">2</span>:array:character/<span class="Special">raw <- </span>copy *<span class="Constant">1</span>:address:array:character/<span class="Special">raw</span> + ] + memory-should-contain [ + <span class="Constant">2</span>:string<span class="Special"> <- </span><span class="Constant">[abc]</span> + ] +] + +<span class="muScenario">scenario</span> replace-all-characters [ + run [ + <span class="Constant">1</span>:address:array:character/<span class="Special">raw <- </span>new <span class="Constant">[banana]</span> + <span class="Constant">1</span>:address:array:character/<span class="Special">raw <- </span>string-replace <span class="Constant">1</span>:address:array:character/<span class="Special">raw</span>, <span class="Constant">97/a</span>, <span class="Constant">122/z</span> + <span class="Constant">2</span>:array:character/<span class="Special">raw <- </span>copy *<span class="Constant">1</span>:address:array:character/<span class="Special">raw</span> + ] + memory-should-contain [ + <span class="Constant">2</span>:string<span class="Special"> <- </span><span class="Constant">[bznznz]</span> + ] +] + <span class="Comment"># replace underscores in first with remaining args</span> <span class="Comment"># result:address:array:character <- interpolate template:address:array:character, ...</span> <span class="muRecipe">recipe</span> interpolate [ @@ -653,7 +725,7 @@ container buffer [ <span class="muControl">loop</span> <span class="Delimiter">}</span> <span class="Comment"># result = new character[end+1 - start]</span> - new-len:number<span class="Special"> <- </span>subtract end, start, -1 + new-len:number<span class="Special"> <- </span>subtract end, start, <span class="Constant">-1</span> result:address:array:character<span class="Special"> <- </span>new <span class="Constant">character:type</span>, new-len <span class="Comment"># copy the untrimmed parts between start and end</span> i:number<span class="Special"> <- </span>copy start @@ -828,7 +900,7 @@ container buffer [ ] ] -<span class="Comment"># idx:number <- find-substring text:address:array:character, pattern:address:array:character, idx:number</span> +<span class="Comment"># next-index:number <- find-substring text:address:array:character, pattern:address:array:character, idx:number</span> <span class="Comment"># like find-next, but searches for multiple characters</span> <span class="Comment"># fairly dumb algorithm</span> <span class="muRecipe">recipe</span> find-substring [ |