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 Drasil.Build.Artifacts (createDirIfMissing)
import Language.Drasil (Stage(Equational), Document)
import Language.Drasil.Printers (makeCSS, genHTML, Notation(Engineering), piSys)
import Language.Drasil.Printing.Import (makeDocument)
import Drasil.System (DrasilWebsite, webRefs, systemdb)
import Drasil.Generator.Formats (Filename)
exportWebsite :: DrasilWebsite -> Document -> Filename -> IO ()
exportWebsite :: DrasilWebsite -> Document -> Filename -> IO ()
exportWebsite DrasilWebsite
syst Document
doc Filename
fileName = do
let printSetting :: PrintingInformation
printSetting = ChunkDB
-> Map UID Reference
-> Stage
-> Notation
-> [LabelledContent]
-> PrintingInformation
piSys (DrasilWebsite
syst DrasilWebsite -> Getting ChunkDB DrasilWebsite ChunkDB -> ChunkDB
forall s a. s -> Getting a s a -> a
^. Getting ChunkDB DrasilWebsite ChunkDB
forall c. HasSystemMeta c => Lens' c ChunkDB
Lens' DrasilWebsite ChunkDB
systemdb) (DrasilWebsite
syst DrasilWebsite
-> Getting (Map UID Reference) DrasilWebsite (Map UID Reference)
-> Map UID Reference
forall s a. s -> Getting a s a -> a
^. Getting (Map UID Reference) DrasilWebsite (Map UID Reference)
Lens' DrasilWebsite (Map UID Reference)
webRefs) Stage
Equational Notation
Engineering []
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