-- >
-- > AT&T bought by SBC!
-- >
-- >
atomText :: (MonadCatch m) => Text -> ConduitParser Event m AtomText
atomText name = named ("Atom text construct <" <> name <> ">") $ tagName' name (optional (textAttr "type") <* ignoreAttrs) handler
where handler (Just "xhtml") = AtomXHTMLText <$> tagIgnoreAttrs' "div" xhtmlContent
handler (Just "html") = AtomPlainText TypeHTML <$> textContent
handler _ = AtomPlainText TypeText <$> textContent
xhtmlContent :: MonadCatch m => ConduitParser Event m Text
xhtmlContent = mconcat <$> many (textContent <|> anyTag (\name attrs -> renderTag name attrs <$> xhtmlContent))
renderTag name attrs content = "<" <> nameLocalName name <> renderAttrs attrs <> ">" <> content <> "" <> nameLocalName name <> ">"
renderAttrs [] = ""
renderAttrs ((name, content):t) = " " <> nameLocalName name <> "=\"" <> mconcat (renderContent <$> content) <> "\"" <> renderAttrs t
renderContent (ContentText t) = t
renderContent (ContentEntity t) = t
-- | Parse an @atom:generator@ element.
-- Example:
--
-- >