{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-|
Module: TextShow.Text.XHtml
Copyright: (C) 2014-2017 Ryan Scott
License: BSD-style (see the file LICENSE)
Maintainer: Ryan Scott
Stability: Provisional
Portability: GHC
'TextShow' instances for data types in the @xhtml@ library.
/Since: 2/
-}
module TextShow.Text.XHtml () where
import Data.Monoid.Compat
import Text.XHtml.Frameset (Html, HtmlAttr, HotLink,
htmlAttrPair, renderHtmlFragment)
import Text.XHtml.Table (HtmlTable)
import TextShow (TextShow(..), FromStringShow(..), fromString, singleton)
import TextShow.TH (deriveTextShow)
-- | /Since: 2/
instance TextShow Html where
showb = fromString . renderHtmlFragment
{-# INLINE showb #-}
showbList = mconcat . map showb
{-# INLINE showbList #-}
-- | /Since: 2/
instance TextShow HtmlAttr where
showb ha = case htmlAttrPair ha of
(str, val) -> fromString str <> singleton '=' <> showb val
{-# INLINE showb #-}
-- | /Since: 2/
$(deriveTextShow ''HotLink)
-- | /Since: 2/
instance TextShow HtmlTable where
showb = showb . FromStringShow
{-# INLINE showb #-}