From 6c2454fb9edff9bdd34415e58a2a3782a984ec5a Mon Sep 17 00:00:00 2001 From: stuebinm Date: Sun, 22 Jan 2023 17:22:29 +0100 Subject: switch to ghc 9.0.2 this makes the nix builds /much/ nicer --- lib/Yesod/Orphans.hs | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 lib/Yesod/Orphans.hs (limited to 'lib/Yesod') diff --git a/lib/Yesod/Orphans.hs b/lib/Yesod/Orphans.hs new file mode 100644 index 0000000..f66f8af --- /dev/null +++ b/lib/Yesod/Orphans.hs @@ -0,0 +1,45 @@ +-- | a module containing orphan shakespeare instances to make writing templates +-- a bit more fun & less of a hassle. +module Yesod.Orphans where + +import Data.Text (Text) +import qualified Data.Text as T +import Data.Time (UTCTime) +import Data.Time.Calendar (Day) +import Data.Time.Format.ISO8601 (iso8601Show) +import Data.UUID (UUID) +import qualified Data.UUID as UUID +import Fmt ((+|), (|+)) +import GTFS +import Persist +import Text.Blaze.Html (ToMarkup (..)) +import Text.Shakespeare.Text +import Yesod + +--- some orphans to make hamlet easier to deal with +instance ToMarkup Time where + toMarkup time = + toMarkup (show time) + +instance ToMarkup Day where + toMarkup day = toMarkup (iso8601Show day) + +instance ToMessage UTCTime where + toMessage = formatW3 + +instance ToMessage Token where + toMessage (Token uuid) = UUID.toText uuid + +instance ToMarkup UTCTime where + toMarkup = toMarkup . formatW3 + +instance ToMarkup Token where + toMarkup (Token uuid) = toMarkup (UUID.toText uuid) + +instance ToMessage Double where + toMessage = T.pack . show + +instance ToMarkup Seconds where + toMarkup (Seconds s) = + if s > 0 then toMarkup ("+"+|s `div` 60|+"" :: Text) + else toMarkup (s `div` 60) -- cgit v1.2.3