)
where
+import Control.Arrow
+import Control.Arrow.ArrowList
import qualified Data.Map as M
import Network
import qualified Network.HTTP.Lucu.Config as LC
+import Rakka.Page
import Rakka.Storage
import Rakka.SystemConfig
import Rakka.Wiki.Engine
import Rakka.Wiki.Interpreter
import qualified Rakka.Wiki.Interpreter.Base as Base
import qualified Rakka.Wiki.Interpreter.Image as Image
+import qualified Rakka.Wiki.Interpreter.PageList as PageList
import qualified Rakka.Wiki.Interpreter.Trackback as Trackback
import qualified Rakka.Wiki.Interpreter.Outline as Outline
import Subversion.Repository
import System.FilePath
import System.IO
import System.Log.Logger
+import Text.HyperEstraier
+import Text.XML.HXT.Arrow.XmlIOStateArrow
+logger :: String
logger = "Rakka.Environment"
= do let lucuConf = LC.defaultConfig {
LC.cnfServerPort = PortNumber portNum
}
- reposPath = lsdir `combine` "repos"
+ reposPath = lsdir </> "repos"
interpTable = mkInterpTable
reposExist <- doesDirectoryExist reposPath
do noticeM logger ("Creating a subversion repository on " ++ reposPath)
createRepository reposPath [] []
sysConf <- mkSystemConfig lucuConf repos
- storage <- mkStorage lsdir repos (makeDraft interpTable)
+ storage <- mkStorage lsdir repos (makeDraft' interpTable)
return $ Environment {
envLocalStateDir = lsdir
, envStorage = storage
, envInterpTable = interpTable
}
+ where
+ makeDraft' :: InterpTable -> Page -> IO Document
+ makeDraft' interpTable page
+ = do [doc] <- runX ( setErrorMsgHandler False fail
+ >>>
+ constA page
+ >>>
+ xmlizePage
+ >>>
+ makeDraft interpTable
+ )
+ return doc
mkInterpTable :: InterpTable
mkInterpTable = listToTable $
foldl (++) [] [ Base.interpreters
, Image.interpreters
+ , PageList.interpreters
, Trackback.interpreters
, Outline.interpreters
]