summary refs log blame commit diff stats
path: root/test/testdir/textfile.txt
blob: 45a234976f5b26fe719202b6f2b91f952118e656 (plain) (tree)
1
2
3
4



                                                                                                                            
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
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 */
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Mu - 066stream.mu</title>
<meta name="Generator" content="Vim/7.4">
<meta name="plugin-version" content="vim7.4_v2">
<meta name="syntax" content="none">
<meta name="settings" content="use_css,pre_wrap,no_foldcolumn,expand_tabs,prevent_copy=">
<meta name="colorscheme" content="minimal">
<style type="text/css">
<!--
pre { white-space: pre-wrap; font-family: monospace; color: #eeeeee; background-color: #080808; }
body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color: #080808; }
* { font-size: 12pt; font-size: 1em; }
.muData { color: #ffff00; }
.muControl { color: #c0a020; }
.Delimiter { color: #800080; }
.Comment { color: #9090ff; }
.Constant { color: #00a0a0; }
.Special { color: #c00000; }
.muRecipe { color: #ff8700; }
-->
</style>

<script type='text/javascript'>
<!--

-->
</script>
</head>
<body>
<pre id='vimCodeElement'>
<span class="Comment"># new type to help incrementally scan arrays</span>
<span class="muData">container</span> stream:_elem [
  index:num
  data:&amp;:@:_elem
]

<span class="muRecipe">def</span> new-stream s:&amp;:@:_elem<span class="muRecipe"> -&gt; </span>result:&amp;:stream:_elem [
  <span class="Constant">local-scope</span>
  <span class="Constant">load-ingredients</span>
  result<span class="Special"> &lt;- </span>new <span class="Delimiter">{</span>(stream _elem): type<span class="Delimiter">}</span>
  *result<span class="Special"> &lt;- </span>put *result, <span class="Constant">index:offset</span>, <span class="Constant">0</span>
  *result<span class="Special"> &lt;- </span>put *result, <span class="Constant">data:offset</span>, s
]

<span class="muRecipe">def</span> rewind in:&amp;:stream:_elem<span class="muRecipe"> -&gt; </span>in:&amp;:stream:_elem [
  <span class="Constant">local-scope</span>
  <span class="Constant">load-ingredients</span>
  *in<span class="Special"> &lt;- </span>put *in, <span class="Constant">index:offset</span>, <span class="Constant">0</span>
]

<span class="muRecipe">def</span> read in:&amp;:stream:_elem<span class="muRecipe"> -&gt; </span>result:_elem, empty?:bool, in:&amp;:stream:_elem [
  <span class="Constant">local-scope</span>
  <span class="Constant">load-ingredients</span>
  empty?<span class="Special"> &lt;- </span>copy <span class="Constant">0/false</span>
  idx:num<span class="Special"> &lt;- </span>get *in, <span class="Constant">index:offset</span>
  s:&amp;:@:_elem<span class="Special"> &lt;- </span>get *in, <span class="Constant">data:offset</span>
  len:num<span class="Special"> &lt;- </span>length *s
  at-end?:bool<span class="Special"> &lt;- </span>greater-or-equal idx len
  <span class="Delimiter">{</span>
    <span class="muControl">break-unless</span> at-end?
    empty-result:&amp;:_elem<span class="Special"> &lt;- </span>new <span class="Constant">_elem:type</span>
    <span class="muControl">return</span> *empty-result, <span class="Constant">1/true</span>
  <span class="Delimiter">}</span>
  result<span class="Special"> &lt;- </span>index *s, idx
  idx<span class="Special"> &lt;- </span>add idx, <span class="Constant">1</span>
  *in<span class="Special"> &lt;- </span>put *in, <span class="Constant">index:offset</span>, idx
]

<span class="muRecipe">def</span> peek in:&amp;:stream:_elem<span class="muRecipe"> -&gt; </span>result:_elem, empty?:bool [
  <span class="Constant">local-scope</span>
  <span class="Constant">load-ingredients</span>
  empty?:bool<span class="Special"> &lt;- </span>copy <span class="Constant">0/false</span>
  idx:num<span class="Special"> &lt;- </span>get *in, <span class="Constant">index:offset</span>
  s:&amp;:@:_elem<span class="Special"> &lt;- </span>get *in, <span class="Constant">data:offset</span>
  len:num<span class="Special"> &lt;- </span>length *s
  at-end?:bool<span class="Special"> &lt;- </span>greater-or-equal idx len
  <span class="Delimiter">{</span>
    <span class="muControl">break-unless</span> at-end?
    empty-result:&amp;:_elem<span class="Special"> &lt;- </span>new <span class="Constant">_elem:type</span>
    <span class="muControl">return</span> *empty-result, <span class="Constant">1/true</span>
  <span class="Delimiter">}</span>
  result<span class="Special"> &lt;- </span>index *s, idx
]

<span class="muRecipe">def</span> read-line in:&amp;:stream:char<span class="muRecipe"> -&gt; </span>result:text, in:&amp;:stream:char [
  <span class="Constant">local-scope</span>
  <span class="Constant">load-ingredients</span>
  idx:num<span class="Special"> &lt;- </span>get *in, <span class="Constant">index:offset</span>
  s:text<span class="Special"> &lt;- </span>get *in, <span class="Constant">data:offset</span>
  next-idx:num<span class="Special"> &lt;- </span>find-next s, <span class="Constant">10/newline</span>, idx
  result<span class="Special"> &lt;- </span>copy-range s, idx, next-idx
  idx<span class="Special"> &lt;- </span>add next-idx, <span class="Constant">1</span>  <span class="Comment"># skip newline</span>
  <span class="Comment"># write back</span>
  *in<span class="Special"> &lt;- </span>put *in, <span class="Constant">index:offset</span>, idx
]

<span class="muRecipe">def</span> end-of-stream? in:&amp;:stream:_elem<span class="muRecipe"> -&gt; </span>result:bool [
  <span class="Constant">local-scope</span>
  <span class="Constant">load-ingredients</span>
  idx:num<span class="Special"> &lt;- </span>get *in, <span class="Constant">index:offset</span>
  s:&amp;:@:_elem<span class="Special"> &lt;- </span>get *in, <span class="Constant">data:offset</span>
  len:num<span class="Special"> &lt;- </span>length *s
  result<span class="Special"> &lt;- </span>greater-or-equal idx, len
]
</pre>
</body>
</html>
<!-- vim: set foldmethod=manual : -->