Hi,<div>I've written a small haskell program to extract a section from a file between start and end markers. For example, if I have a file such as below - </div><div><div>a</div><div>b</div><div>c</div><div> <bug></div>
<div>d</div><div>e</div><div>f</div><div> </bug></div><div>g</div><div>h</div><div>i</div></div><div><br></div><div>I'd like to extract the contents between <bug> and </bug> (including the markers). </div>
<div><br></div><div><pre style="margin-top:0px;margin-bottom:0px;font-size:13px;text-align:left;background-color:rgb(255,255,255)"><span class="hs-definition">startTag</span> <span class="hs-keyglyph">=</span> <span class="hs-str" style="color:rgb(54,99,84)">"<bug>"</span>
<span class="hs-definition">endTag</span> <span class="hs-keyglyph">=</span> <span class="hs-str" style="color:rgb(54,99,84)">"</bug>"</span>
<span class="hs-definition">process</span> <span class="hs-keyglyph">=</span> <span class="hs-varid" style="color:rgb(51,51,51)">unlines</span> <span class="hs-varop" style="color:rgb(51,51,51)">.</span> <span class="hs-varid" style="color:rgb(51,51,51)">specialTakeWhile</span> <span class="hs-layout">(</span><span class="hs-varid" style="color:rgb(51,51,51)">f</span> <span class="hs-varid" style="color:rgb(51,51,51)">endTag</span><span class="hs-layout">)</span> <span class="hs-varop" style="color:rgb(51,51,51)">.</span> <span class="hs-varid" style="color:rgb(51,51,51)">dropWhile</span> <span class="hs-layout">(</span><span class="hs-varid" style="color:rgb(51,51,51)">f</span> <span class="hs-varid" style="color:rgb(51,51,51)">startTag</span><span class="hs-layout">)</span> <span class="hs-varop" style="color:rgb(51,51,51)">.</span> <span class="hs-varid" style="color:rgb(51,51,51)">lines</span>
<span class="hs-keyword" style="color:rgb(57,116,96)">where</span> <span class="hs-varid" style="color:rgb(51,51,51)">f</span> <span class="hs-varid" style="color:rgb(51,51,51)">t</span> <span class="hs-varid" style="color:rgb(51,51,51)">x</span> <span class="hs-keyglyph">=</span> <span class="hs-varid" style="color:rgb(51,51,51)">not</span> <span class="hs-layout">(</span><span class="hs-varid" style="color:rgb(51,51,51)">x</span> <span class="hs-varop" style="color:rgb(51,51,51)">=~</span> <span class="hs-varid" style="color:rgb(51,51,51)">t</span><span class="hs-layout">)</span>
<span class="hs-varid" style="color:rgb(51,51,51)">specialTakeWhile</span> <span class="hs-keyglyph">::</span> <span class="hs-layout">(</span><span class="hs-varid" style="color:rgb(51,51,51)">a</span> <span class="hs-keyglyph">-></span> <span class="hs-conid" style="color:rgb(79,67,113)">Bool</span><span class="hs-layout">)</span> <span class="hs-keyglyph">-></span> <span class="hs-keyglyph">[</span><span class="hs-varid" style="color:rgb(51,51,51)">a</span><span class="hs-keyglyph">]</span> <span class="hs-keyglyph">-></span> <span class="hs-keyglyph">[</span><span class="hs-varid" style="color:rgb(51,51,51)">a</span><span class="hs-keyglyph">]</span>
<span class="hs-varid" style="color:rgb(51,51,51)">specialTakeWhile</span> <span class="hs-varid" style="color:rgb(51,51,51)">ff</span> <span class="hs-conid" style="color:rgb(79,67,113)">[]</span> <span class="hs-keyglyph">=</span> <span class="hs-conid" style="color:rgb(79,67,113)">[]</span>
<span class="hs-varid" style="color:rgb(51,51,51)">specialTakeWhile</span> <span class="hs-varid" style="color:rgb(51,51,51)">ff</span> <span class="hs-layout">(</span><span class="hs-varid" style="color:rgb(51,51,51)">x</span><span class="hs-conop">:</span><span class="hs-varid" style="color:rgb(51,51,51)">xs</span><span class="hs-layout">)</span> <span class="hs-keyglyph">=</span> <span class="hs-keyword" style="color:rgb(57,116,96)">if</span> <span class="hs-varid" style="color:rgb(51,51,51)">ff</span> <span class="hs-varid" style="color:rgb(51,51,51)">x</span> <span class="hs-keyword" style="color:rgb(57,116,96)">then</span> <span class="hs-varid" style="color:rgb(51,51,51)">x</span><span class="hs-conop">:</span><span class="hs-layout">(</span><span class="hs-varid" style="color:rgb(51,51,51)">specialTakeWhile</span> <span class="hs-varid" style="color:rgb(51,51,51)">ff</span> <span class="hs-varid" style="color:rgb(51,51,51)">xs</span><span class="hs-layout">)</span> <span class="hs-keyword" style="color:rgb(57,116,96)">else</span> <span class="hs-keyglyph">[</span><span class="hs-varid" style="color:rgb(51,51,51)">x</span><span class="hs-keyglyph">]</span></pre>
<pre style="margin-top:0px;margin-bottom:0px;font-size:13px;text-align:left;background-color:rgb(255,255,255)"><span class="hs-keyglyph"><br></span></pre><pre style="margin-top:0px;margin-bottom:0px;font-size:13px;text-align:left;background-color:rgb(255,255,255)">
<span class="hs-keyglyph"><br></span></pre><pre style="margin-top:0px;margin-bottom:0px;font-size:13px;text-align:left;background-color:rgb(255,255,255)"><span class="hs-keyglyph">It'll be great if I could get some feedback on this.</span></pre>
<pre style="margin-top:0px;margin-bottom:0px;font-size:13px;text-align:left;background-color:rgb(255,255,255)"><span class="hs-keyglyph"><br></span></pre><pre style="margin-top:0px;margin-bottom:0px;font-size:13px;text-align:left;background-color:rgb(255,255,255)">
<span class="hs-keyglyph">Regards,</span></pre><pre style="margin-top:0px;margin-bottom:0px;font-size:13px;text-align:left;background-color:rgb(255,255,255)"><span class="hs-keyglyph">Kashyap</span></pre></div>