X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Rakka%2FWiki%2FEngine.hs;h=aa897e841e01b6429d9dd9fd1d5d81ebedb9f532;hb=b3c3f333cd48bc74eb33f0f21d56a9d1bc65e0ea;hp=f0de8fb7b078ac6ae14ded434c47b0399ffd2a75;hpb=dcfffa578c5dd6647a5be7d2074488a520dfcf2d;p=Rakka.git diff --git a/Rakka/Wiki/Engine.hs b/Rakka/Wiki/Engine.hs index f0de8fb..aa897e8 100644 --- a/Rakka/Wiki/Engine.hs +++ b/Rakka/Wiki/Engine.hs @@ -32,27 +32,27 @@ formatPage env -> do tree <- case pageType page of MIMEType "text" "x-rakka" _ -> do let source = decodeLazy UTF8 (pageContent page) - formatWikiPage env -< (Just page, source) + formatWikiPage env -< (pageName page, source) attachXHtmlNs -< tree formatSubPage :: (ArrowXml a, ArrowChoice a, ArrowIO a) => Environment - -> a (Page, Page) XmlTree + -> a (PageName, Page) XmlTree formatSubPage env - = proc (mainPage, subPage) + = proc (mainPageName, subPage) -> do tree <- case pageType subPage of MIMEType "text" "x-rakka" _ -> do let source = decodeLazy UTF8 (pageContent subPage) - formatWikiPage env -< (Just mainPage, source) + formatWikiPage env -< (mainPageName, source) attachXHtmlNs -< tree formatWikiPage :: (ArrowXml a, ArrowChoice a, ArrowIO a) => Environment - -> a (Maybe Page, String) XmlTree + -> a (PageName, String) XmlTree formatWikiPage env - = proc (page, source) + = proc (name, source) -> do BaseURI baseURI <- getSysConfA (envSysConf env) (BaseURI undefined) -< () interpTable <- getInterpTableA env -< () @@ -63,7 +63,7 @@ formatWikiPage env -> formatParseError -< err Right blocks - -> do xs <- interpretCommandsA env -< (interpTable, (page, blocks)) + -> do xs <- interpretCommandsA env -< (interpTable, (name, blocks)) formatWikiBlocks -< (baseURI, xs) where tableToFunc :: InterpTable -> String -> Maybe CommandType @@ -73,23 +73,23 @@ formatWikiPage env interpretCommandsA :: ArrowIO a => Environment - -> a (InterpTable, (Maybe Page, WikiPage)) WikiPage + -> a (InterpTable, (PageName, WikiPage)) WikiPage interpretCommandsA = arrIO3 . interpretCommands -interpretCommands :: Environment -> InterpTable -> Maybe Page -> WikiPage -> IO WikiPage +interpretCommands :: Environment -> InterpTable -> PageName -> WikiPage -> IO WikiPage interpretCommands _ _ _ [] = return [] -interpretCommands env table page blocks = everywhereM' (mkM interpBlockCmd) blocks +interpretCommands env table name blocks = everywhereM' (mkM interpBlockCmd) blocks >>= everywhereM' (mkM interpInlineCmd) where ctx :: InterpreterContext ctx = InterpreterContext { - ctxPage = page - , ctxTree = blocks - , ctxStorage = envStorage env - , ctxSysConf = envSysConf env - } + ctxPageName = name + , ctxTree = blocks + , ctxStorage = envStorage env + , ctxSysConf = envSysConf env + } interpBlockCmd :: BlockElement -> IO BlockElement interpBlockCmd (BlockCmd cmd) = interpBlockCmd' cmd