)
where
-import qualified Codec.Binary.Base64 as B64
import qualified Codec.Binary.UTF8.String as UTF8
import Control.Arrow
import Control.Arrow.ArrowIO
import Control.Arrow.ArrowList
import qualified Data.ByteString.Lazy as Lazy
+import qualified Data.ByteString.Lazy.Char8 as L8 hiding (ByteString)
import Data.Map (Map)
import qualified Data.Map as M
import Data.Maybe
import Network.HTTP.Lucu
import Network.URI
+import OpenSSL.EVP.Base64
import Rakka.Page
import Rakka.Storage
import Rakka.SystemConfig
binToURI m b
= nullURI {
uriScheme = "data:"
- , uriPath = show m ++ ";base64," ++ B64.encode (Lazy.unpack b)
+ , uriPath = show m ++ ";base64," ++ (L8.unpack $ encodeBase64LBS b)
}
wiki <- wikifyPage interpTable -< tree
pName <- getXPathTreesInDoc "/page/@name/text()" >>> getText -< tree
interpreted <- interpretCommands sto sysConf interpTable
- -< (pName, Just tree, Just wiki, wiki)
+ -< (Just pName, Just tree, Just wiki, wiki)
formatWikiBlocks -< (baseURI, interpreted)
Storage
-> SystemConfig
-> InterpTable
- -> a (PageName, Maybe XmlTree, XmlTree) XmlTree
+ -> a (Maybe PageName, Maybe XmlTree, XmlTree) XmlTree
makeSubXHTML sto sysConf interpTable
= proc (mainPageName, mainPage, subPage)
-> do BaseURI baseURI <- getSysConfA sysConf -< ()
-> do BaseURI baseURI <- getSysConfA sysConf -< ()
wiki <- wikifyBin interpTable -< (pageType, pageBin)
interpreted <- interpretCommands sto sysConf interpTable
- -< (name, Nothing, Just wiki, wiki)
+ -< (Just name, Nothing, Just wiki, wiki)
formatWikiBlocks -< (baseURI, interpreted)
Storage
-> SystemConfig
-> InterpTable
- -> a (PageName, Maybe XmlTree, Maybe WikiPage, WikiPage) WikiPage
+ -> a (Maybe PageName, Maybe XmlTree, Maybe WikiPage, WikiPage) WikiPage
interpretCommands sto sysConf interpTable
= proc (name, mainPage, mainWiki, targetWiki)
-> let ctx = InterpreterContext {
-> do wiki <- wikifyPage interpTable -< tree
pName <- getXPathTreesInDoc "/page/@name/text()" >>> getText -< tree
interpreted <- interpretCommands sto sysConf interpTable
- -< (pName, Just tree, Just wiki, wiki)
+ -< (Just pName, Just tree, Just wiki, wiki)
returnA -< concatMap extractFromBlock interpreted
where
extractFromElem :: Element -> [PageName]