1 module Worksheets.Writing.Latin where
3 import Data.ByteString.Builder (Builder)
4 import Data.Text qualified as Text
5 import Data.Text.IO.Utf8 qualified as Text
6 import Paths_worksheets qualified as Self
7 import System.FilePath.Posix qualified as File
9 import Text.Blaze.Html5 qualified as H
10 import Text.Blaze.Html5.Attributes qualified as HA
11 import Text.Blaze.Renderer.Utf8 qualified as Blaze
14 -- import Debug.Pretty.Simple (pTraceShowM)
16 worksheet :: File.FilePath -> IO Builder
17 worksheet inputFilePath = do
18 inputText <- Text.readFile inputFilePath
19 let inputLines = Text.lines inputText
20 -- FIXME: this absolute path is not reproducible out of my system
21 cssPath <- Self.getDataFileName "style/worksheet.css" <&> File.normalise
22 return $ Blaze.renderMarkupBuilder do
25 H.title $ fromString $ File.takeBaseName inputFilePath
29 ! HA.href (toValue cssPath)
32 H.div ! HA.class_ "worksheet" $ do
33 forM_ inputLines \inputLine -> do
34 H.div ! HA.class_ "row" $ do
35 forM_ (Text.unpack inputLine) \inputChar -> do
37 | inputChar == ' ' = " cell-space"
39 H.div ! HA.class_ ("cell" <> cellSpace) $ do
40 fromString [inputChar]
42 H.div ! HA.class_ "row" $ do
43 forM_ (Text.unpack inputLine) \inputChar -> do
45 | inputChar == ' ' = " cell-space"
47 H.div ! HA.class_ ("cell" <> cellSpace) $ do