xml-basic-0.0.1: src/Text/XML/Basic/Name/LowerCase.hs
{- |
This name uses only lowercase characters as canonical representation,
except for @DOCTYPE@ and @CDATA@.
This is optimal for processing HTML which is case-insensitiv.
-}
module Text.XML.Basic.Name.LowerCase where
import qualified Text.XML.Basic.Name as Name
import qualified Text.XML.Basic.Tag as Tag
import Data.Char (toLower, toUpper, )
newtype T = Cons String
deriving (Eq, Ord)
instance Show T where
showsPrec p (Cons s) = showsPrec p s
instance Name.Tag T where
tagFromString x = Cons $
let xu = map toUpper x
in if elem xu $ [Tag.doctypeString, Tag.cdataString]
then xu
else map toLower x
tagToString (Cons s) = s
instance Name.Attribute T where
attributeFromString = Cons . map toLower
attributeToString (Cons s) = s