packages feed

futhark-0.25.35: src/Futhark/Util/Html.hs

{-# LANGUAGE TemplateHaskell #-}

module Futhark.Util.Html
  ( relativise,
    headHtmlWithCss,
    headHtml,
    cssFile,
  )
where

import Data.FileEmbed (embedStringFile)
import Data.String (fromString)
import Data.Text qualified as T
import System.FilePath (makeRelative, splitPath)
import Text.Blaze.Html5 ((!))
import Text.Blaze.Html5 qualified as H
import Text.Blaze.Html5.Attributes qualified as A

cssFile :: T.Text
cssFile = $(embedStringFile "rts/style.css")

relativise :: FilePath -> FilePath -> FilePath
relativise dest src =
  concat (replicate (length (splitPath src) - 1) "../") ++ makeRelative "/" dest

headHtmlWithCss :: String -> String -> H.Html
headHtmlWithCss cssPath titleText =
  H.head $
    H.meta
      ! A.charset "utf-8"
      <> H.title (fromString titleText)
      <> H.link
        ! A.href (fromString cssPath)
        ! A.rel "stylesheet"
        ! A.type_ "text/css"

headHtml :: FilePath -> String -> H.Html
headHtml current = headHtmlWithCss (relativise "style.css" current)