module Text.HTML.WraXML.Element (
module Text.HTML.WraXML.Element,
T, name_, attributes_,
Elem.cons, Elem.name, Elem.attributes,
Elem.checkName, Elem.format,
) where
import Text.XML.WraXML.Element (T, name_, attributes_, )
import qualified Text.XML.WraXML.Element as Elem
import qualified Text.XML.Basic.Name as Name
import qualified Text.XML.WraXML.String as XmlString
import qualified Text.HTML.Basic.Tag as Tag
import qualified Text.HTML.Basic.Character as HtmlChar
import qualified Text.HTML.Basic.String as HtmlString
import Control.Monad.Trans.State (State, put, get, )
-- * decode
decodeAdaptive ::
(Name.Attribute name, Name.Tag name) =>
(XmlString.Encoding -> XmlString.Encoded -> String) ->
T name [HtmlChar.T] ->
State (HtmlString.Encoded -> String) (T name String)
decodeAdaptive getDecoder elem0 =
do decoder <- get
let elem1 =
fmap (HtmlString.decode decoder) elem0
maybe
(return ())
(put . getDecoder) $
(Tag.maybeMetaEncoding
(name_ elem1) (attributes_ elem1))
return elem1