From 58e04761af30e092662dac331493200ccca48650 Mon Sep 17 00:00:00 2001 From: Michael Andreen Date: Wed, 19 Jan 2005 16:49:54 +0000 Subject: [PATCH] Parser instead of GenParser Char st --- Wiki.hs | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/Wiki.hs b/Wiki.hs index 1371c45..2de6f92 100644 --- a/Wiki.hs +++ b/Wiki.hs @@ -46,13 +46,13 @@ data Markup = Text String type Document = [Markup] -wikiParser :: GenParser Char st Document +wikiParser :: Parser Document wikiParser = many1 pMain -pPara :: GenParser Char st Markup +pPara :: Parser Markup pPara = count 2 pEol >> return (Paragraph) -pLink :: GenParser Char st Markup +pLink :: Parser Markup pLink = do string "[[" (l,d) <- pLinkContent @@ -60,18 +60,18 @@ pLink = do [] -> return (Link l l) _ -> return (Link l d) -pList :: GenParser Char st Markup +pList :: Parser Markup pList = do list <- many1 $ try pListItem return (List list) -pListItem :: GenParser Char st [Markup] +pListItem :: Parser [Markup] pListItem = do many1 pEol char '*' many pOneLine -pHeading :: GenParser Char st Markup +pHeading :: Parser Markup pHeading = do many1 pEol level <- many1 $ char '=' @@ -79,14 +79,14 @@ pHeading = do s <- pStopAt (' ':level) return (Heading (length level) s) -pURL :: GenParser Char st Markup +pURL :: Parser Markup pURL = do proto <- many1 letter string "://" s <- many1 (alphaNum <|> oneOf "?.:&-/") return (Url (proto++"://"++s)) -pMail :: GenParser Char st Markup +pMail :: Parser Markup pMail = do user <- many1 (alphaNum <|> oneOf ".-_") char '@' @@ -94,12 +94,12 @@ pMail = do return (Url ("mailto:"++user++"@"++server)) -pPre :: GenParser Char st Markup +pPre :: Parser Markup pPre = string "
" >> do
 	s <- pString "
" return (Pre s) -pBold,pEmph,pUnderline,pStrike :: GenParser Char st Markup +pBold,pEmph,pUnderline,pStrike :: Parser Markup pBold = pS "**" (\s -> Bold s) pEmph = pS "//" (\s -> Emph s) pUnderline = pS "__" (\s -> Underline s) @@ -108,17 +108,17 @@ pS s f = string s >> do s <- pStopAt s return (f s) -pOtherChar :: GenParser Char st Markup +pOtherChar :: Parser Markup pOtherChar = do c <- noneOf "\n\r" return (Text (c:[])) -pText :: GenParser Char st Markup +pText :: Parser Markup pText = do t <- many1 alphaNum return (Text t) -pLinkContent :: GenParser Char st (String, String) +pLinkContent :: Parser (String, String) pLinkContent = do try (string "]]" >> return ([],[])) <|> try (do string " | " @@ -129,21 +129,21 @@ pLinkContent = do try (string "]]" >> return ([],[])) (l,d) <- pLinkContent return (c:l,d)) -pStopAt :: String -> GenParser Char st Document +pStopAt :: String -> Parser Document pStopAt xs = pUntil pOneLine xs -pString :: String -> GenParser Char st String +pString :: String -> Parser String pString xs = pUntil anyChar xs -pEol :: GenParser Char st Markup +pEol :: Parser Markup pEol = do (string "\n" <|> string "\r\n") return (Text "\r\n") -pUntil :: GenParser Char st a -> String -> GenParser Char st [a] +pUntil :: Parser a -> String -> Parser [a] pUntil p xs = manyTill p (try $ string xs) -pMain :: GenParser Char st Markup +pMain :: Parser Markup pMain = choice [ try (pHeading) ,try pList -- 2.39.2