web-output-0.3.0.0: WebOutput.hs
module WebOutput where
import System.IO.Temp (openTempFile, createTempDirectory)
import Web.Browser (openBrowser)
import System.IO (hPutStr, hFlush)
import System.Directory (getTemporaryDirectory)
import System.FilePath.Posix (combine, FilePath)
import qualified Data.Text as T
import qualified Data.Text.IO as T
toTheBrowser content = do
dir <- getTemporaryDirectory
path <- writeContentToTempFile dir content "output.html"
openBrowser path
where
writeContentToTempFile dir content fileName = do
(path, handle) <- openTempFile dir "output.html"
hPutStr handle content
hFlush handle
return path
data Resource = Resource {
location :: FilePath,
content :: T.Text
}
writeResource (Resource loc con) = T.writeFile loc con
manyToTheBrowser resources = do
dir <- getTemporaryDirectory
containing <- createTempDirectory dir "output"
mapM writeResource (combined containing)
(openBrowser . location . head) (combined containing)
where
combined dir = map (applyLocation (combine dir)) resources
applyLocation f (Resource a b) = Resource (f a) b