module Text.HTML.WraXML.Document (
   XMLDoc.T(..), XMLDoc.lift, format,
   ) where

import qualified Text.HTML.WraXML.Tree    as HTMLTree
import qualified Text.XML.WraXML.Document as XMLDoc
import qualified Text.XML.Basic.Name as Name
import qualified Text.XML.Basic.Format as Format


format ::
   (Name.Tag name, Name.Attribute name, Format.C string) =>
   XMLDoc.T i name string -> ShowS
format (XMLDoc.Cons xml dtd trees) =
   let (formatHTML, formatXMLDecl) =
          maybe
             (HTMLTree.formatMany, id)
             (\xmlDecl ->
                 (HTMLTree.formatManyXHTML,
                  XMLDoc.formatXMLDeclaration xmlDecl)) xml
   in  formatXMLDecl .
       maybe id XMLDoc.formatDocType dtd .
       formatHTML trees