{-# LANGUAGE TemplateHaskell #-} module Static where import Data.FileEmbed import Data.ByteString import System.Directory import Data.ByteString.UTF8 headerFiles :: [(FilePath, ByteString)] headerFiles = $(embedDir "./document/headers") babelFiles :: [(FilePath, ByteString)] babelFiles = $(embedDir "./src/babel") createDirectories :: String -> IO [()] createDirectories pathname = mapM (\ s -> (createDirectoryIfMissing True (pathname ++ "/document/" ++ s))) ["images", "headers", "main"] writeFiles :: String -> [(FilePath, Data.ByteString.ByteString)] -> IO () writeFiles pathname filelist = do _ <- (mapM (\ (name, content) -> Data.ByteString.writeFile (pathname ++ name) content) filelist) return () latexHeader :: ByteString latexHeader = $(embedFile "./latex/my-head.tex") latexFooter :: ByteString latexFooter = $(embedFile "./latex/my-tail.tex") latexPreamble :: ByteString latexPreamble = $(embedFile "./latex/preamble.tex") latexTableHeader :: ByteString latexTableHeader = $(embedFile "./latex/my-tabhead.tex") latexTableFooter :: ByteString latexTableFooter = $(embedFile "./latex/my-tabtail.tex") userTemplates :: String userTemplates = toString $(embedFile "./latex/templates.user") extract :: String -> IO () extract pathname = do _ <- createDirectories pathname writeFiles (pathname ++ "/document/headers/") headerFiles