{-| Module : Data.Number.ER.ShowHTML Description : Misc facilities for HTML rendering. Copyright : (c) Michal Konecny License : BSD3 Maintainer : mik@konecny.aow.cz Stability : experimental Portability : portable -} module Data.Number.ER.ShowHTML where import qualified Text.Html as H import Text.Regex {-| Render HTML is a way that can be inlined in Javascript strings etc. -} showHTML :: (H.HTML t) => t -> String showHTML v = escapeNewLines $ renderHtmlNoHeader $ H.toHtml v where -- stripHeader s = -- (splitRegex (mkRegex "-->") s) !! 1 escapeNewLines s = (subRegex (mkRegex "([^\\])$") s "\\1\\\\") abovesTable attrs cells = H.table H.! attrs H.<< (H.aboves $ map (H.td H.<<) cells) besidesTable attrs cells = H.table H.! attrs H.<< (H.aboves [H.besides $ map (H.td H.<<) cells]) renderHtmlNoHeader :: H.Html -> String renderHtmlNoHeader theHtml = foldr (.) id (map (H.renderHtml' 0) (H.getHtmlElements theHtml)) "\n" toHtmlDefault :: (Show a) => a -> H.Html toHtmlDefault = H.toHtml . show instance (H.HTML a) => H.HTML (Maybe a) where toHtml Nothing = H.toHtml $ "[Nothing]" toHtml (Just a) = H.toHtml a