mirror of
https://github.com/commercialhaskell/stackage-server.git
synced 2026-01-12 20:28:32 +01:00
35 lines
1.1 KiB
Haskell
35 lines
1.1 KiB
Haskell
module Data.WebsiteContent
|
|
( WebsiteContent (..)
|
|
, loadWebsiteContent
|
|
) where
|
|
|
|
import ClassyPrelude.Yesod
|
|
import Text.Markdown (markdown, msXssProtect, msAddHeadingId)
|
|
import Data.GhcLinks
|
|
|
|
data WebsiteContent = WebsiteContent
|
|
{ wcHomepage :: !Html
|
|
, wcAuthors :: !Html
|
|
, wcInstall :: !Html
|
|
, wcOlderReleases :: !Html
|
|
, wcGhcLinks :: !GhcLinks
|
|
}
|
|
|
|
loadWebsiteContent :: FilePath -> IO WebsiteContent
|
|
loadWebsiteContent dir = do
|
|
wcHomepage <- readHtml "homepage.html"
|
|
wcAuthors <- readHtml "authors.html"
|
|
wcInstall <- readMarkdown "install.md"
|
|
wcOlderReleases <- readHtml "older-releases.html" `catchIO`
|
|
\_ -> readMarkdown "older-releases.md"
|
|
wcGhcLinks <- readGhcLinks $ dir </> "stackage-cli"
|
|
return WebsiteContent {..}
|
|
where
|
|
readHtml fp = fmap (preEscapedToMarkup . decodeUtf8 :: ByteString -> Html)
|
|
$ readFile $ dir </> fp
|
|
readMarkdown fp = fmap (markdown def
|
|
{ msXssProtect = False
|
|
, msAddHeadingId = True
|
|
})
|
|
$ readFile $ dir </> fp
|