Haskell Parsec Numeration

Posted by Martin on Stack Overflow See other posts from Stack Overflow or by Martin
Published on 2010-04-29T01:42:32Z Indexed on 2010/04/29 1:47 UTC
Read the original article Hit count: 498

I'm using Text.ParserCombinators.Parsec and Text.XHtml to parse an input like this:

- First type A\n
-- First type B\n
- Second type A\n
-- First type B\n
--Second type B\n

And my output should be:


<h1>1 First type A\n</h1>
<h2>1.1 First type B\n</h2>
<h1>2 Second type A\n</h2>
<h2>2.1 First type B\n</h2>
<h2>2.2 Second type B\n</h2>

I have come to this part, but I cannot get any further:


title1= do{     
                ;(count 1 (char '-'))
                ;s <- many1 anyChar newline
                ;return (h1 << s)
    }

title2= do{     
                ;(count 2 (char '--'))
                ;s <- many1 anyChar newline
                ;return (h1 << s)
    }

text=do {
        ;many (choice [try(title1),try(title2)])
 }

main :: IO ()
main = do t putStr "Error: " >> print err
            Right x  -> putStrLn $ prettyHtml x


This is ok, but it does not include the numbering.

Any ideas?

Thanks!

© Stack Overflow or respective owner

Related posts about haskell

Related posts about parsing