]> ruin.nu Git - yawbih.git/commitdiff
some restructuring and added listKeys to backend
authorMichael Andreen <harv@ruin.nu>
Mon, 13 Dec 2004 11:07:09 +0000 (11:07 +0000)
committerMichael Andreen <harv@ruin.nu>
Sat, 26 Jan 2008 11:33:17 +0000 (12:33 +0100)
Main.hs
Wiki.hs

diff --git a/Main.hs b/Main.hs
index 260e9788febb9169fb01f3323725b0a888cbb1e5..eb1e82d7cdd1ef04a925e4b392220575199fa698 100644 (file)
--- a/Main.hs
+++ b/Main.hs
@@ -56,7 +56,7 @@ showPage db key = do
                footer db key
 
 parseText full = case parse wikiParser "" full of
                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)
        Left e -> do
                text "PARSE ERROR: "
                text (show e)
@@ -102,37 +102,37 @@ changeCurrent db key id = do
                        p empty
                        linkKey db key
        
                        p empty
                        linkKey db key
        
-ex [] = return ()
-ex ((Paragraph):xs) = do
+toWash [] = return ()
+toWash ((Paragraph):xs) = do
        p empty
        p empty
-       ex xs
-ex ((Text s):xs) = do
+       toWash xs
+toWash ((Text s):xs) = do
        text s
        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)
        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)
        hlink (URL {unURL = (l)}) (text l)
-       ex xs
-ex ((Pre s):xs) = do
+       toWash xs
+toWash ((Pre s):xs) = do
        pre $ text s
        pre $ text s
-       ex xs
+       toWash xs
 
 heading 1 = h1
 heading 2 = h2
 
 heading 1 = h1
 heading 2 = h2
@@ -140,22 +140,3 @@ heading 3 = h3
 heading 4 = h4
 heading 5 = h5
 heading 6 = h6
 heading 4 = h4
 heading 5 = h5
 heading 6 = h6
-
-ex2 [] = []
-ex2 ((Paragraph):xs) = "<p>\n"++ex2 xs
-ex2 ((Text s):xs) = s++ex2 xs
-ex2 ((Link l d):xs) = "<link: "++l++" desc: "++d++">"++ex2 xs
-ex2 ((Bold d):xs) = "<b>"++ex2 d++"</b>"++ex2 xs
-ex2 ((Emph d):xs) = "<em>"++ex2 d++"</em>"++ex2 xs
-ex2 ((Underline d):xs) = "<u>"++ex2 d++"</u>"++ex2 xs
-ex2 ((Strike d):xs) = "<strike>"++ex2 d++"</strike>"++ex2 xs
-ex2 ((Heading n d):xs) = "\n<h"++show n++">"++ex2 d++"</h"++show n++">\n"++ex2 xs
-ex2 ((Url l):xs) = "<link: "++l++">"++ex2 xs
-ex2 ((Pre s):xs) = "<pre>"++s++"</pre>"++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 9db2541a9dcff880b840770e91d9db40a5b2a020..231dda46217123dc1cee063d5dbc150a1c8f4f1f 100644 (file)
--- a/Wiki.hs
+++ b/Wiki.hs
@@ -1,10 +1,11 @@
 module Wiki (
 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
        ,PGB
        ,createPGB
        ,Markup (Text, Paragraph, Link, Bold, Emph, Heading, Url, Underline, Strike, Pre)
        ,Document
        ,wikiParser
+       ,htmlOutput
 
 ) where
 
 
 ) where
 
@@ -28,6 +29,9 @@ class Backend a where
        --Keyword -> Full text -> id
        update :: a -> String -> String -> String -> String -> IO String
 
        --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
 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
                                [[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++"'"
                
                        
 
 tov :: String -> String
 tov s = '\'':escapeQuery s++"'"
                
-
+toHtml :: [Markup] -> String
+toHtml [] = []
+toHtml ((Paragraph):xs) = "<p>\n"++toHtml xs
+toHtml ((Text s):xs) = s++toHtml xs
+toHtml ((Link l d):xs) = "<link: "++l++" desc: "++d++">"++toHtml xs
+toHtml ((Bold d):xs) = "<b>"++toHtml d++"</b>"++toHtml xs
+toHtml ((Emph d):xs) = "<em>"++toHtml d++"</em>"++toHtml xs
+toHtml ((Underline d):xs) = "<u>"++toHtml d++"</u>"++toHtml xs
+toHtml ((Strike d):xs) = "<strike>"++toHtml d++"</strike>"++toHtml xs
+toHtml ((Heading n d):xs) = "\n<h"++show n++">"++toHtml d++"</h"++show n++">\n"++toHtml xs
+toHtml ((Url l):xs) = "<link: "++l++">"++toHtml xs
+toHtml ((Pre s):xs) = "<pre>"++s++"</pre>"++toHtml xs
+
+
+htmlOutput s = case parse wikiParser "" s of
+                                       Right n -> do 
+                                               putStr (toHtml n)
+                                       Left e -> do
+                                               print e