xml-query-xml-types-0.4: library/XMLQuery/XMLTypes/Renderer.hs
module XMLQuery.XMLTypes.Renderer where
import XMLQuery.XMLTypes.Prelude
import Data.XML.Types
import qualified Data.Text.Lazy.Builder as Builder
import qualified Data.Text.Lazy as LazyText
import qualified HTMLEntities.Decoder
type Renderer a =
a -> Builder.Builder
run :: Renderer a -> a -> Text
run renderer input =
LazyText.toStrict $
Builder.toLazyText $
renderer input
name :: Renderer Name
name =
\(Name local ns prefix) ->
foldMap (\x -> Builder.fromText x <> Builder.singleton ':') prefix <>
Builder.fromText local
contents :: Renderer [Content]
contents =
foldMap content
content :: Renderer Content
content =
\case
ContentText x ->
Builder.fromText x
ContentEntity x ->
either (error "XMLQuery.XMLTypes.Renderer.content: corrupt ContentEntity") Builder.fromText $
HTMLEntities.Decoder.htmlEntity x