waldo-0: src/Waldo/Waldo.hs
module Waldo.Waldo (
WaldoData(..)
, loadWaldo
) where
import Control.Monad
import Data.HashMap.Strict (HashMap)
import qualified Data.HashMap.Strict as Map
import qualified Data.Text as T
import Waldo.Stalk
import Waldo.Script
data WaldoData =
WaldoData {
wdStalkDB :: StalkDB
, wdGenScript :: HashMap T.Text (PersonalData -> IO Script)
}
loadWaldo :: FilePath -> [(T.Text, IO (PersonalData -> IO Script))] ->IO WaldoData
loadWaldo dd storyGenLoaders = do
sdb <- loadStalkDB dd
storyGens <- forM storyGenLoaders $ \(nm, ldr) -> do
sgen <- ldr
return (nm, sgen)
let wdata = WaldoData { wdStalkDB = sdb
, wdGenScript = Map.fromList storyGens
}
putStrLn "Loading completed!"
return wdata