diff --git a/hledger-lib/Hledger/Write/Html.hs b/hledger-lib/Hledger/Write/Html.hs
index 18f82b101..2a3b0533b 100644
--- a/hledger-lib/Hledger/Write/Html.hs
+++ b/hledger-lib/Hledger/Write/Html.hs
@@ -23,12 +23,7 @@ import Data.Foldable (traverse_)
printHtml :: (Lines border) => [[Cell border (Lucid.Html ())]] -> Lucid.Html ()
printHtml table = do
- Lucid.style_ $ Text.unlines $
- "" :
- "table {border-collapse:collapse}" :
- "th, td {padding-left:1em}" :
- "th.account, td.account {padding-left:0;}" :
- []
+ Lucid.style_ Attr.tableStylesheet
Lucid.table_ $ traverse_ formatRow table
formatRow:: (Lines border) => [Cell border (Lucid.Html ())] -> Lucid.Html ()
@@ -50,7 +45,7 @@ formatCell cell =
let style =
case leftBorder++rightBorder++topBorder++bottomBorder of
[] -> []
- ss -> [Attr.styles_ ss] in
+ ss -> [Lucid.style_ $ Attr.concatStyles ss] in
let class_ =
map Lucid.class_ $
filter (not . Text.null) [Spr.textFromClass $ cellClass cell] in
diff --git a/hledger-lib/Hledger/Write/Html/Attribute.hs b/hledger-lib/Hledger/Write/Html/Attribute.hs
index b20897ec8..875ed22c3 100644
--- a/hledger-lib/Hledger/Write/Html/Attribute.hs
+++ b/hledger-lib/Hledger/Write/Html/Attribute.hs
@@ -1,11 +1,12 @@
{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE FlexibleContexts #-} -- for stylesheet_
{- |
Helpers and CSS styles for HTML output.
-}
module Hledger.Write.Html.Attribute (
- stylesheet_,
- styles_,
+ stylesheet,
+ concatStyles,
+ tableStylesheet,
+ tableStyle,
bold,
doubleborder,
topdoubleborder,
@@ -20,20 +21,27 @@ module Hledger.Write.Html.Attribute (
vpad,
) where
-import qualified Lucid.Base as LucidBase
-import qualified Lucid
import qualified Data.Text as Text
import Data.Text (Text)
--- | result can be 'Lucid.Attribute' or @Lucid.Html ()@
-stylesheet_ :: LucidBase.TermRaw Text result => [(Text,Text)] -> result
-stylesheet_ elstyles =
- Lucid.style_ $ Text.unlines $
+stylesheet :: [(Text,Text)] -> Text
+stylesheet elstyles =
+ Text.unlines $
"" : [el<>" {"<>styles<>"}" | (el,styles) <- elstyles]
-styles_ :: [Text] -> Lucid.Attribute
-styles_ = Lucid.style_ . Text.intercalate "; "
+concatStyles :: [Text] -> Text
+concatStyles = Text.intercalate "; "
+
+
+tableStylesheet :: Text
+tableStylesheet = stylesheet tableStyle
+
+tableStyle :: [(Text, Text)]
+tableStyle =
+ [("table", collapse),
+ ("th, td", lpad),
+ ("th.account, td.account", "padding-left:0;")]
bold, doubleborder, topdoubleborder, bottomdoubleborder :: Text
bold = "font-weight:bold"
diff --git a/hledger/Hledger/Cli/Commands/Balance.hs b/hledger/Hledger/Cli/Commands/Balance.hs
index 7d5def0b9..16f561ff2 100644
--- a/hledger/Hledger/Cli/Commands/Balance.hs
+++ b/hledger/Hledger/Cli/Commands/Balance.hs
@@ -298,7 +298,7 @@ import Hledger.Cli.Utils
import Hledger.Write.Csv (CSV, printCSV, printTSV)
import Hledger.Write.Ods (printFods)
import Hledger.Write.Html (printHtml)
-import Hledger.Write.Html.Attribute (stylesheet_, collapse, lpad)
+import Hledger.Write.Html.Attribute (tableStylesheet)
import qualified Hledger.Write.Html as Html
import qualified Hledger.Write.Spreadsheet as Ods
@@ -811,7 +811,7 @@ multiBalanceReportAsHtml ropts mbr =
let
(headingsrow,bodyrows,mtotalsrows) = multiBalanceReportHtmlRows ropts mbr
in do
- stylesheet_ [("table",collapse), ("th, td",lpad), ("th.account, td.account","padding-left:0;")]
+ style_ tableStylesheet
table_ $ mconcat $
[headingsrow]
++ bodyrows
diff --git a/hledger/Hledger/Cli/CompoundBalanceCommand.hs b/hledger/Hledger/Cli/CompoundBalanceCommand.hs
index 51d4ec5b8..98e74ced8 100644
--- a/hledger/Hledger/Cli/CompoundBalanceCommand.hs
+++ b/hledger/Hledger/Cli/CompoundBalanceCommand.hs
@@ -22,7 +22,7 @@ import qualified Data.Text.Lazy.Builder as TB
import Data.Time.Calendar (Day, addDays)
import System.Console.CmdArgs.Explicit as C (Mode, flagNone, flagReq)
import Hledger.Write.Csv (CSV, printCSV, printTSV)
-import Hledger.Write.Html.Attribute (stylesheet_, collapse, lpad, alignleft, alignright)
+import Hledger.Write.Html.Attribute (stylesheet, tableStyle, alignleft, alignright)
import qualified Hledger.Write.Html as Html
import qualified Hledger.Write.Spreadsheet as Spr
import Lucid as L hiding (value_)
@@ -384,10 +384,8 @@ compoundBalanceReportAsHtml ropts cbr =
in do
link_ [rel_ "stylesheet", href_ "hledger.css"]
- stylesheet_ [
- ("table",collapse),
- ("th, td",lpad),
- ("th.account, td.account","padding-left:0;"),
+ style_ $ stylesheet $
+ tableStyle ++ [
("td:nth-child(1)", "white-space:nowrap"),
("tr:nth-child(even) td", "background-color:#eee")
]