From 464842463236cab162bb4cffa8bebe8b42f3b3eb Mon Sep 17 00:00:00 2001 From: Michael Andreen Date: Mon, 13 Dec 2004 11:07:09 +0000 Subject: [PATCH] some restructuring and added listKeys to backend --- Main.hs | 73 +++++++++++++++++++++------------------------------------ Wiki.hs | 33 ++++++++++++++++++++++++-- 2 files changed, 58 insertions(+), 48 deletions(-) diff --git a/Main.hs b/Main.hs index 260e978..eb1e82d 100644 --- a/Main.hs +++ b/Main.hs @@ -56,7 +56,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) @@ -102,37 +102,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 +140,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 diff --git a/Wiki.hs b/Wiki.hs index 9db2541..231dda4 100644 --- a/Wiki.hs +++ b/Wiki.hs @@ -1,10 +1,11 @@ module Wiki ( - Backend (getCurrent,getList,get,setCurrent,update) + Backend (getCurrent,getList,get,setCurrent,update,listKeys) ,PGB ,createPGB ,Markup (Text, Paragraph, Link, Bold, Emph, Heading, Url, Underline, Strike, Pre) ,Document ,wikiParser + ,htmlOutput ) where @@ -28,6 +29,9 @@ class Backend a where --Keyword -> Full text -> id update :: a -> String -> String -> String -> String -> IO String + --[Keyword] + listKeys :: a -> IO [String] + data Markup = Text String | Paragraph | Link String String @@ -190,9 +194,34 @@ instance Backend PGB where [[id]] <- selectReturnTuples db $ "SELECT currval('fulltexts_id_seq')" setCurrent (PGB db) key id return id + + listKeys (PGB db) = do + list <- selectReturnTuples db $ "SELECT keyword FROM fulltexts ORDER BY lower(keyword)" + case list of + [[]] -> return [] + _ -> mapM (\[key] -> return key) list + tov :: String -> String tov s = '\'':escapeQuery s++"'" - +toHtml :: [Markup] -> String +toHtml [] = [] +toHtml ((Paragraph):xs) = "

\n"++toHtml xs +toHtml ((Text s):xs) = s++toHtml xs +toHtml ((Link l d):xs) = ""++toHtml xs +toHtml ((Bold d):xs) = ""++toHtml d++""++toHtml xs +toHtml ((Emph d):xs) = ""++toHtml d++""++toHtml xs +toHtml ((Underline d):xs) = ""++toHtml d++""++toHtml xs +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 + + +htmlOutput s = case parse wikiParser "" s of + Right n -> do + putStr (toHtml n) + Left e -> do + print e -- 2.39.2