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, )
decodeAdaptive ::
(Name.Attribute name, Name.Tag name) =>
(XmlString.Encoding -> XmlString.Encoded -> String) ->
T name [HtmlChar.T] ->
State (HtmlString.Encoded -> String) (T name String)
decodeAdaptive :: forall name.
(Attribute name, Tag name) =>
(Encoding -> Encoding -> Encoding)
-> T name [T] -> State (Encoding -> Encoding) (T name Encoding)
decodeAdaptive Encoding -> Encoding -> Encoding
getDecoder T name [T]
elem0 =
do Encoding -> Encoding
decoder <- forall (m :: * -> *) s. Monad m => StateT s m s
get
let elem1 :: T name Encoding
elem1 =
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((Encoding -> Encoding) -> [T] -> Encoding
HtmlString.decode Encoding -> Encoding
decoder) T name [T]
elem0
forall b a. b -> (a -> b) -> Maybe a -> b
maybe
(forall (m :: * -> *) a. Monad m => a -> m a
return ())
(forall (m :: * -> *) s. Monad m => s -> StateT s m ()
put forall b c a. (b -> c) -> (a -> b) -> a -> c
. Encoding -> Encoding -> Encoding
getDecoder) forall a b. (a -> b) -> a -> b
$
(forall name.
(Tag name, Attribute name) =>
Name name -> [T name Encoding] -> Maybe Encoding
Tag.maybeMetaEncoding
(forall name str. T name str -> Name name
name_ T name Encoding
elem1) (forall name str. T name str -> [T name str]
attributes_ T name Encoding
elem1))
forall (m :: * -> *) a. Monad m => a -> m a
return T name Encoding
elem1