X-Git-Url: https://ruin.nu/git/?p=yawbih.git;a=blobdiff_plain;f=Wiki.hs;h=2b8b31383779ae576115b14cdc106522b4bf99d1;hp=2de6f920cde32ec3baeb96a9c8774c3299c35f92;hb=b0821b704ddf955948416ec8bfa0afcc6512c933;hpb=58e04761af30e092662dac331493200ccca48650
diff --git a/Wiki.hs b/Wiki.hs
index 2de6f92..2b8b313 100644
--- a/Wiki.hs
+++ b/Wiki.hs
@@ -42,7 +42,7 @@ data Markup = Text String
| Underline [Markup]
| Strike [Markup]
| Pre String
- | List [[Markup]]
+ | List Bool [[Markup]]
type Document = [Markup]
@@ -60,23 +60,25 @@ pLink = do
[] -> return (Link l l)
_ -> return (Link l d)
-pList :: Parser Markup
-pList = do
- list <- many1 $ try pListItem
- return (List list)
+pList :: Bool -> Parser Markup
+pList enum = do
+ list <- many1 $ try $ pListItem enum
+ return (List enum list)
-pListItem :: Parser [Markup]
-pListItem = do
+pListItem :: Bool -> Parser [Markup]
+pListItem enum = do
many1 pEol
- char '*'
+ char $ listToken enum
many pOneLine
+
+listToken True = '#'
+listToken False = '*'
pHeading :: Parser Markup
pHeading = do
many1 pEol
level <- many1 $ char '='
- char ' '
- s <- pStopAt (' ':level)
+ s <- pStopAt level
return (Heading (length level) s)
pURL :: Parser Markup
@@ -146,7 +148,8 @@ pUntil p xs = manyTill p (try $ string xs)
pMain :: Parser Markup
pMain = choice [
try (pHeading)
- ,try pList
+ ,try $ pList True
+ ,try $ pList False
,try (pPara)
,try(pPre)
,try(pBold)
@@ -242,7 +245,10 @@ toHtml ((Strike d):xs) = ""++toHtml d++""++toHtml xs
toHtml ((Heading n d):xs) = "\n"++toHtml d++"\n"++toHtml xs
toHtml ((Url l):xs) = ""++toHtml xs
toHtml ((Pre s):xs) = ""++s++"
"++toHtml xs
-toHtml ((List l):xs) = "\n"++(unlines $ map (\s -> "- "++toHtml s++"
\n") l) ++ "
"++toHtml xs
+toHtml ((List o l):xs) = "<"++listType o++">\n"++(unlines $ map (\s -> ""++toHtml s++"\n") l) ++ ""++listType o++">"++toHtml xs
+
+listType True = "ol"
+listType False = "ul"
htmlOutput s = case parse wikiParser "" s of
Right n -> putStr (toHtml n)