]> ruin.nu Git - yawbih.git/commitdiff
cleanup in the eol code
authorMichael Andreen <harv@ruin.nu>
Mon, 7 Feb 2005 08:40:36 +0000 (08:40 +0000)
committerMichael Andreen <harv@ruin.nu>
Sat, 26 Jan 2008 11:33:20 +0000 (12:33 +0100)
Wiki.hs

diff --git a/Wiki.hs b/Wiki.hs
index 210708df3d3a100fb50d267f33d1e647604acb37..5e75da1958e2c494a7ac6e643c939e4c28c4f366 100644 (file)
--- a/Wiki.hs
+++ b/Wiki.hs
@@ -50,8 +50,13 @@ type Document = [Markup]
 wikiParser :: Parser Document  
 wikiParser = many1 pMain
 
+firstInLineChars = "#*="
+
 pPara :: Parser Markup 
-pPara = count 2 pEol >> return (Paragraph)
+pPara = do 
+       count 2 pEol 
+       notFollowedBy $ oneOf firstInLineChars 
+       return (Paragraph)
 
 pLink :: Parser Markup 
 pLink = do
@@ -68,16 +73,21 @@ pList enum = do
 
 pListItem :: Bool -> Parser [Markup]
 pListItem enum = do
-       many1 pEol
+       pEol
        char $ listToken enum
-       many pOneLine
+       many (pOneLine <|> try (pOneEol))
+
+pOneEol = do 
+       c <- pEol
+       notFollowedBy (oneOf $ firstInLineChars++"\r\n")
+       return c
 
 listToken True = '#'
 listToken False = '*'
        
 pHeading :: Parser Markup      
 pHeading = do
-       many1 pEol
+       pEol
        level <- many1 $ char '='
        s <- pStopAt level
        return (Heading (length level) s)