module Worksheets.Writing.Latin where import Data.ByteString.Builder (Builder) import Data.Text qualified as Text import Data.Text.IO.Utf8 qualified as Text import Paths_worksheets qualified as Self import System.FilePath.Posix qualified as File import Text.Blaze import Text.Blaze.Html5 qualified as H import Text.Blaze.Html5.Attributes qualified as HA import Text.Blaze.Renderer.Utf8 qualified as Blaze import Prelude -- import Debug.Pretty.Simple (pTraceShowM) worksheet :: File.FilePath -> IO Builder worksheet inputFilePath = do inputText <- Text.readFile inputFilePath let inputLines = Text.lines inputText -- FIXME: this absolute path is not reproducible out of my system cssPath <- Self.getDataFileName "worksheet.css" <&> File.normalise return $ Blaze.renderMarkupBuilder do H.docTypeHtml do H.head do H.title $ fromString $ File.takeBaseName inputFilePath H.link ! HA.rel "stylesheet" ! HA.type_ "text/css" ! HA.href (toValue cssPath) H.body do "\n" H.div ! HA.class_ "worksheet" $ do forM_ inputLines \inputLine -> do H.div ! HA.class_ "row" $ do forM_ (Text.unpack inputLine) \inputChar -> do let cellSpace | inputChar == ' ' = " cell-space" | otherwise = "" H.div ! HA.class_ ("cell" <> cellSpace) $ do fromString [inputChar] "\n" H.div ! HA.class_ "row" $ do forM_ (Text.unpack inputLine) \inputChar -> do let cellSpace | inputChar == ' ' = " cell-space" | otherwise = "" H.div ! HA.class_ ("cell" <> cellSpace) $ do fromString " " "\n"