module Drasil.Generator.Website (
exportWebsite
) where
import Prelude hiding (id)
import Control.Lens ((^.))
import System.IO (hClose, hPutStrLn, openFile, IOMode(WriteMode))
import Text.PrettyPrint.HughesPJ (render)
import Language.Drasil (Stage(Equational), Document)
import Language.Drasil.Printers (makeCSS, genHTML, defaultConfiguration, piSys)
import Language.Drasil.Printing.Import (makeDocument)
import Drasil.System (System, refTable, systemdb)
import Utils.Drasil (createDirIfMissing)
import Drasil.Generator.Formats (Filename)
exportWebsite :: System -> Document -> Filename -> IO ()
exportWebsite :: System -> Document -> Filename -> IO ()
exportWebsite System
syst Document
doc Filename
fileName = do
let printSetting :: PrintingInformation
printSetting = ChunkDB
-> Map UID Reference
-> Stage
-> PrintingConfiguration
-> PrintingInformation
piSys (System
syst System -> Getting ChunkDB System ChunkDB -> ChunkDB
forall s a. s -> Getting a s a -> a
^. Getting ChunkDB System ChunkDB
forall c. HasSystem c => Lens' c ChunkDB
Lens' System ChunkDB
systemdb) (System
syst System
-> Getting (Map UID Reference) System (Map UID Reference)
-> Map UID Reference
forall s a. s -> Getting a s a -> a
^. Getting (Map UID Reference) System (Map UID Reference)
forall c. HasSystem c => Lens' c (Map UID Reference)
Lens' System (Map UID Reference)
refTable) Stage
Equational PrintingConfiguration
defaultConfiguration
dir :: Filename
dir = Filename
"Website/HTML"
pd :: Document
pd = PrintingInformation -> Document -> Document
makeDocument PrintingInformation
printSetting Document
doc
Bool -> Filename -> IO ()
createDirIfMissing Bool
True Filename
dir
Handle
outh <- Filename -> IOMode -> IO Handle
openFile (Filename
dir Filename -> Filename -> Filename
forall a. [a] -> [a] -> [a]
++ Filename
"/" Filename -> Filename -> Filename
forall a. [a] -> [a] -> [a]
++ Filename
fileName Filename -> Filename -> Filename
forall a. [a] -> [a] -> [a]
++ Filename
".html") IOMode
WriteMode
Handle -> Filename -> IO ()
hPutStrLn Handle
outh (Filename -> IO ()) -> Filename -> IO ()
forall a b. (a -> b) -> a -> b
$ Doc -> Filename
render (Doc -> Filename) -> Doc -> Filename
forall a b. (a -> b) -> a -> b
$ Filename -> Document -> Doc
genHTML Filename
fileName Document
pd
Handle -> IO ()
hClose Handle
outh
Handle
outh2 <- Filename -> IOMode -> IO Handle
openFile (Filename
dir Filename -> Filename -> Filename
forall a. [a] -> [a] -> [a]
++ Filename
"/" Filename -> Filename -> Filename
forall a. [a] -> [a] -> [a]
++ Filename
fileName Filename -> Filename -> Filename
forall a. [a] -> [a] -> [a]
++ Filename
".css") IOMode
WriteMode
Handle -> Filename -> IO ()
hPutStrLn Handle
outh2 (Filename -> IO ()) -> Filename -> IO ()
forall a b. (a -> b) -> a -> b
$ Doc -> Filename
render (Doc -> Filename) -> Doc -> Filename
forall a b. (a -> b) -> a -> b
$ Document -> Doc
makeCSS Document
doc
Handle -> IO ()
hClose Handle
outh2