<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">Looks good to me, but I'm just a
beginner!<br>
I used the isInfixOf from Data.List instead of =~ to run your
example because the later wasn't working on my instalation. <br>
<br>
I've made a slightly variant using the break function:<br>
<br>
import Data.List<br>
startTag = "<bug>"<br>
endTag = "</bug>"<br>
<br>
main = interact process<br>
<br>
process = unlines . extractSection startTag endTag . lines<br>
extractSection start stop xs =<br>
let (ls,rs) = break (isInfixOf stop) $ dropWhile (not .
isInfixOf start) xs<br>
in ls ++ take 1 rs<br>
<br>
<br>
On 07/15/12 13:08, C K Kashyap wrote:<br>
</div>
<blockquote
cite="mid:CAGdT1goLUM8TxA=NtYuvMpdYaCkF5m_c6_Jb7FMU5-ZMERWqHg@mail.gmail.com"
type="cite">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-layou
t">)</spa
n> <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">
</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">
</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">
</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>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
Beginners mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Beginners@haskell.org">Beginners@haskell.org</a>
<a class="moz-txt-link-freetext" href="http://www.haskell.org/mailman/listinfo/beginners">http://www.haskell.org/mailman/listinfo/beginners</a>
</pre>
</blockquote>
<br>
<br>
</body>
</html>