= proc page
-> do BaseURI baseURI <- getSysConfA (envSysConf env) (BaseURI undefined) -< ()
wiki <- wikifyPage env -< page
- xs <- interpretCommandsA env -< (pageName page, (Just wiki, wiki))
+ xs <- interpretCommandsA env -< (pageName page, (Just (page, wiki), wiki))
formatWikiBlocks -< (baseURI, xs)
mainWiki <- case mainPage of
Just page
-> do wiki <- wikifyPage env -< page
- returnA -< Just wiki
+ returnA -< Just (page, wiki)
Nothing
-> returnA -< Nothing
subWiki <- wikifyPage env -< subPage
interpretCommandsA :: ArrowIO a =>
Environment
- -> a (PageName, (Maybe WikiPage, WikiPage)) WikiPage
+ -> a (PageName, (Maybe (Page, WikiPage), WikiPage)) WikiPage
interpretCommandsA = arrIO3 . interpretCommands
-interpretCommands :: Environment -> PageName -> Maybe WikiPage -> WikiPage -> IO WikiPage
+interpretCommands :: Environment -> PageName -> Maybe (Page, WikiPage) -> WikiPage -> IO WikiPage
interpretCommands _ _ _ [] = return []
-interpretCommands env name mainTree targetTree
+interpretCommands env name mainPageAndTree targetTree
= everywhereM' (mkM interpBlockCmd) targetTree
>>=
everywhereM' (mkM interpInlineCmd)
ctx :: InterpreterContext
ctx = InterpreterContext {
ctxPageName = name
- , ctxMainTree = mainTree
+ , ctxMainPage = fmap fst mainPageAndTree
+ , ctxMainTree = fmap snd mainPageAndTree
, ctxTargetTree = targetTree
, ctxStorage = envStorage env
, ctxSysConf = envSysConf env