X-Git-Url: https://ruin.nu/git/?p=yawbih.git;a=blobdiff_plain;f=Main.hs;h=418c16820b88fafff475bcc544eee02f227bcabd;hp=260e9788febb9169fb01f3323725b0a888cbb1e5;hb=64b58e5b75b4c8e95574fa9080166f5cf1079005;hpb=1f195ec53bd48d4471e92d60f1e83808679a79ce diff --git a/Main.hs b/Main.hs index 260e978..418c168 100644 --- a/Main.hs +++ b/Main.hs @@ -6,6 +6,7 @@ import CGIOutput import CGITypes import System import Wiki +import Control.Monad import Text.ParserCombinators.Parsec @@ -56,7 +57,7 @@ showPage db key = do footer db key parseText full = case parse wikiParser "" full of - Right n -> ex n + Right n -> toWash n Left e -> do text "PARSE ERROR: " text (show e) @@ -65,11 +66,16 @@ parseText full = case parse wikiParser "" full of footer db key = do hr empty table $ tr $ do - td $ submitLink0 (editPage db key) (text "Edit this keyword") - td $ submitLink0 (listRevs db key) (text "List old versions") + td $ submitLink0 (showPage db "MainPage") (text "Back to main page") + when (e key) $ td $ submitLink0 (editPage db key) (text "Edit this keyword") + when (e key) $ td $ submitLink0 (listRevs db key) (text "List old versions") + td $ submitLink0 (listKeywords db) (text "List all keywords") td $ text "Keyword: " td $ activate (showPage db) textInputField empty +e "" = False +e _ = True + listRevs db key = do list <- io $ getList db key standardQuery key $ table $ do @@ -77,6 +83,14 @@ listRevs db key = do ["Id", "Date", "Author", "Comment"] mapM (revRow db key) list +listKeywords db = do + list <- io $ listKeys db + standardQuery "List of keywords" $ do + table (do + tr $ th (text "Keyword") + mapM (\key -> tr $ td $ linkKey db key) list) + footer db "" + linkKey db key = submitLink0 (showPage db key) (text key) revRow db key (id, date, author, comment) = tr $ do @@ -102,37 +116,37 @@ changeCurrent db key id = do p empty linkKey db key -ex [] = return () -ex ((Paragraph):xs) = do +toWash [] = return () +toWash ((Paragraph):xs) = do p empty - ex xs -ex ((Text s):xs) = do + toWash xs +toWash ((Text s):xs) = do text s - ex xs -ex ((Link l d):xs) = do + toWash xs +toWash ((Link l d):xs) = do hlink (URL {unURL = ("wiki?"++l)}) (text d) - ex xs -ex ((Bold d):xs) = do - b (ex d) - ex xs -ex ((Emph d):xs) = do - em (ex d) - ex xs -ex ((Underline d):xs) = do - u (ex d) - ex xs -ex ((Strike d):xs) = do - strike (ex d) - ex xs -ex ((Heading n d):xs) = do - heading n $ ex d - ex xs -ex ((Url l):xs) = do + toWash xs +toWash ((Bold d):xs) = do + b (toWash d) + toWash xs +toWash ((Emph d):xs) = do + em (toWash d) + toWash xs +toWash ((Underline d):xs) = do + u (toWash d) + toWash xs +toWash ((Strike d):xs) = do + strike (toWash d) + toWash xs +toWash ((Heading n d):xs) = do + heading n $ toWash d + toWash xs +toWash ((Url l):xs) = do hlink (URL {unURL = (l)}) (text l) - ex xs -ex ((Pre s):xs) = do + toWash xs +toWash ((Pre s):xs) = do pre $ text s - ex xs + toWash xs heading 1 = h1 heading 2 = h2 @@ -140,22 +154,3 @@ heading 3 = h3 heading 4 = h4 heading 5 = h5 heading 6 = h6 - -ex2 [] = [] -ex2 ((Paragraph):xs) = "

\n"++ex2 xs -ex2 ((Text s):xs) = s++ex2 xs -ex2 ((Link l d):xs) = ""++ex2 xs -ex2 ((Bold d):xs) = ""++ex2 d++""++ex2 xs -ex2 ((Emph d):xs) = ""++ex2 d++""++ex2 xs -ex2 ((Underline d):xs) = ""++ex2 d++""++ex2 xs -ex2 ((Strike d):xs) = ""++ex2 d++""++ex2 xs -ex2 ((Heading n d):xs) = "\n"++ex2 d++"\n"++ex2 xs -ex2 ((Url l):xs) = ""++ex2 xs -ex2 ((Pre s):xs) = "

"++s++"
"++ex2 xs - - -test s = case parse wikiParser "" s of - Right n -> do - putStr (ex2 n) - Left e -> do - print e