-
- let parser = wikiPage (tableToFunc interpTable)
-
- case parse parser "" source of
- Left err
- -> formatParseError -< err
-
- Right blocks
- -> do xs <- interpretCommandsA env -< (interpTable, (name, blocks))
- formatWikiBlocks -< (baseURI, xs)
+ mainWiki <- case mainPage of
+ Just page
+ -> do wiki <- wikifyPage env -< (interpTable, page)
+ returnA -< Just wiki
+ Nothing
+ -> returnA -< Nothing
+ subWiki <- wikifyPage env -< (interpTable, subPage)
+ xs <- interpretCommandsA env -< (interpTable, (mainPageName, (mainWiki, subWiki)))
+ formatWikiBlocks -< (baseURI, xs)
+
+
+wikifyPage :: (ArrowXml a, ArrowChoice a, ArrowIO a) =>
+ Environment
+ -> a (InterpTable, Page) WikiPage
+wikifyPage env
+ = proc (interpTable, page)
+ -> case pageType page of
+ MIMEType "text" "x-rakka" _
+ -> do let source = decodeLazy UTF8 (pageContent page)
+ parser = wikiPage (tableToFunc interpTable)
+
+ case parse parser "" source of
+ Left err
+ -> wikifyParseError -< err
+
+ Right xs
+ -> returnA -< xs