40 lines
1.1 KiB
Haskell
40 lines
1.1 KiB
Haskell
{-# LANGUAGE OverloadedStrings #-}
|
|
{- |
|
|
Common definitions used by both Html.Blaze and Html.Lucid.
|
|
-}
|
|
|
|
module Hledger.Write.Html.HtmlCommon (
|
|
Lines(..),
|
|
borderStyles,
|
|
) where
|
|
|
|
import Data.Text (Text)
|
|
|
|
import Hledger.Write.Spreadsheet (Cell(..))
|
|
import qualified Hledger.Write.Spreadsheet as Spr
|
|
|
|
|
|
borderStyles :: Lines border => Cell border text -> [Text]
|
|
borderStyles cell =
|
|
let border field access =
|
|
map (field<>) $ borderLines $ access $ cellBorder cell in
|
|
let leftBorder = border "border-left:" Spr.borderLeft in
|
|
let rightBorder = border "border-right:" Spr.borderRight in
|
|
let topBorder = border "border-top:" Spr.borderTop in
|
|
let bottomBorder = border "border-bottom:" Spr.borderBottom in
|
|
leftBorder++rightBorder++topBorder++bottomBorder
|
|
|
|
|
|
class (Spr.Lines border) => Lines border where
|
|
borderLines :: border -> [Text]
|
|
|
|
instance Lines () where
|
|
borderLines () = []
|
|
|
|
instance Lines Spr.NumLines where
|
|
borderLines prop =
|
|
case prop of
|
|
Spr.NoLine -> []
|
|
Spr.SingleLine -> ["black"]
|
|
Spr.DoubleLine -> ["double black"]
|