module Text.XML.Basic.Tag (
Name(..),
doctype, doctypeName, doctypeString,
cdata, cdataName, cdataString,
xmlName, xmlString,
maybeXMLEncoding,
) where
import qualified Text.XML.Basic.Name as Name
import qualified Text.XML.Basic.ProcessingInstruction as PI
import qualified Text.XML.Basic.Attribute as Attr
import Control.Monad (guard, )
newtype Name ident = Name {forall ident. Name ident -> ident
unname :: ident}
deriving (Name ident -> Name ident -> Bool
forall ident. Eq ident => Name ident -> Name ident -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Name ident -> Name ident -> Bool
$c/= :: forall ident. Eq ident => Name ident -> Name ident -> Bool
== :: Name ident -> Name ident -> Bool
$c== :: forall ident. Eq ident => Name ident -> Name ident -> Bool
Eq, Name ident -> Name ident -> Bool
Name ident -> Name ident -> Ordering
Name ident -> Name ident -> Name ident
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall {ident}. Ord ident => Eq (Name ident)
forall ident. Ord ident => Name ident -> Name ident -> Bool
forall ident. Ord ident => Name ident -> Name ident -> Ordering
forall ident. Ord ident => Name ident -> Name ident -> Name ident
min :: Name ident -> Name ident -> Name ident
$cmin :: forall ident. Ord ident => Name ident -> Name ident -> Name ident
max :: Name ident -> Name ident -> Name ident
$cmax :: forall ident. Ord ident => Name ident -> Name ident -> Name ident
>= :: Name ident -> Name ident -> Bool
$c>= :: forall ident. Ord ident => Name ident -> Name ident -> Bool
> :: Name ident -> Name ident -> Bool
$c> :: forall ident. Ord ident => Name ident -> Name ident -> Bool
<= :: Name ident -> Name ident -> Bool
$c<= :: forall ident. Ord ident => Name ident -> Name ident -> Bool
< :: Name ident -> Name ident -> Bool
$c< :: forall ident. Ord ident => Name ident -> Name ident -> Bool
compare :: Name ident -> Name ident -> Ordering
$ccompare :: forall ident. Ord ident => Name ident -> Name ident -> Ordering
Ord)
instance Show ident => Show (Name ident) where
showsPrec :: Int -> Name ident -> ShowS
showsPrec Int
p = forall a. Show a => Int -> a -> ShowS
showsPrec Int
p forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall ident. Name ident -> ident
unname
instance Name.Tag ident => Name.C (Name ident) where
fromString :: String -> Name ident
fromString = forall ident. ident -> Name ident
Name forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall ident. Tag ident => String -> ident
Name.tagFromString
toString :: Name ident -> String
toString = forall ident. Tag ident => ident -> String
Name.tagToString forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall ident. Name ident -> ident
unname
{-# DEPRECATED doctype "use doctypeName instead" #-}
doctype :: (Name.Tag name) => Name name
doctype :: forall name. Tag name => Name name
doctype = forall name. Tag name => Name name
doctypeName
{-# DEPRECATED cdata "use cdataName instead" #-}
cdata :: (Name.Tag name) => Name name
cdata :: forall name. Tag name => Name name
cdata = forall name. Tag name => Name name
cdataName
doctypeName :: (Name.Tag name) => Name name
doctypeName :: forall name. Tag name => Name name
doctypeName = forall name. C name => String -> name
Name.fromString String
doctypeString
cdataName :: (Name.Tag name) => Name name
cdataName :: forall name. Tag name => Name name
cdataName = forall name. C name => String -> name
Name.fromString String
cdataString
xmlName :: (Name.Tag name) => Name name
xmlName :: forall name. Tag name => Name name
xmlName = forall name. C name => String -> name
Name.fromString String
xmlString
doctypeString :: String
doctypeString :: String
doctypeString = String
"DOCTYPE"
cdataString :: String
cdataString :: String
cdataString = String
"[CDATA["
xmlString :: String
xmlString :: String
xmlString = String
"xml"
maybeXMLEncoding ::
(Name.Tag name, Name.Attribute name) =>
Name name -> PI.T name string -> Maybe string
maybeXMLEncoding :: forall name string.
(Tag name, Attribute name) =>
Name name -> T name string -> Maybe string
maybeXMLEncoding Name name
name T name string
instr =
do forall (f :: * -> *). Alternative f => Bool -> f ()
guard (forall name. Tag name => Name name
xmlName forall a. Eq a => a -> a -> Bool
== Name name
name)
let (PI.Known [T name string]
attrs) = T name string
instr
forall name string.
Attribute name =>
Name name -> [T name string] -> Maybe string
Attr.lookup forall name. Attribute name => Name name
Attr.encodingName [T name string]
attrs