module Web.Mangrove.Parse.Tokenize.Doctype
( tokenDoctype
) where
import qualified Data.Char as C
import qualified Data.Text as T
import Web.Mangrove.Parse.Common.Error
import Web.Mangrove.Parse.Tokenize.Common
import Web.Willow.Common.Encoding.Character
import Web.Willow.Common.Parser.Util
import Control.Applicative ( (<|>) )
data DoctypeParams' = DoctypeParams'
{ DoctypeParams' -> Maybe String
doctypeName' :: Maybe String
, DoctypeParams' -> Maybe String
doctypePublicId' :: Maybe String
, DoctypeParams' -> Maybe String
doctypeSystemId' :: Maybe String
, DoctypeParams' -> Bool
doctypeQuirks' :: Bool
}
deriving ( DoctypeParams' -> DoctypeParams' -> Bool
(DoctypeParams' -> DoctypeParams' -> Bool)
-> (DoctypeParams' -> DoctypeParams' -> Bool) -> Eq DoctypeParams'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DoctypeParams' -> DoctypeParams' -> Bool
$c/= :: DoctypeParams' -> DoctypeParams' -> Bool
== :: DoctypeParams' -> DoctypeParams' -> Bool
$c== :: DoctypeParams' -> DoctypeParams' -> Bool
Eq, Int -> DoctypeParams' -> ShowS
[DoctypeParams'] -> ShowS
DoctypeParams' -> String
(Int -> DoctypeParams' -> ShowS)
-> (DoctypeParams' -> String)
-> ([DoctypeParams'] -> ShowS)
-> Show DoctypeParams'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DoctypeParams'] -> ShowS
$cshowList :: [DoctypeParams'] -> ShowS
show :: DoctypeParams' -> String
$cshow :: DoctypeParams' -> String
showsPrec :: Int -> DoctypeParams' -> ShowS
$cshowsPrec :: Int -> DoctypeParams' -> ShowS
Show, ReadPrec [DoctypeParams']
ReadPrec DoctypeParams'
Int -> ReadS DoctypeParams'
ReadS [DoctypeParams']
(Int -> ReadS DoctypeParams')
-> ReadS [DoctypeParams']
-> ReadPrec DoctypeParams'
-> ReadPrec [DoctypeParams']
-> Read DoctypeParams'
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DoctypeParams']
$creadListPrec :: ReadPrec [DoctypeParams']
readPrec :: ReadPrec DoctypeParams'
$creadPrec :: ReadPrec DoctypeParams'
readList :: ReadS [DoctypeParams']
$creadList :: ReadS [DoctypeParams']
readsPrec :: Int -> ReadS DoctypeParams'
$creadsPrec :: Int -> ReadS DoctypeParams'
Read )
emptyDoctypeData :: DoctypeParams'
emptyDoctypeData :: DoctypeParams'
emptyDoctypeData = DoctypeParams' :: Maybe String
-> Maybe String -> Maybe String -> Bool -> DoctypeParams'
DoctypeParams'
{ doctypeName' :: Maybe String
doctypeName' = Maybe String
forall a. Maybe a
Nothing
, doctypePublicId' :: Maybe String
doctypePublicId' = Maybe String
forall a. Maybe a
Nothing
, doctypeSystemId' :: Maybe String
doctypeSystemId' = Maybe String
forall a. Maybe a
Nothing
, doctypeQuirks' :: Bool
doctypeQuirks' = Bool
False
}
quirksDoctype :: DoctypeParams'
quirksDoctype :: DoctypeParams'
quirksDoctype = DoctypeParams'
emptyDoctypeData
{ doctypeQuirks' :: Bool
doctypeQuirks' = Bool
True
}
packDoctypeToken :: TokenizerOutput DoctypeParams' -> TokenizerOutput Token
packDoctypeToken :: TokenizerOutput DoctypeParams' -> TokenizerOutput Token
packDoctypeToken TokenizerOutput DoctypeParams'
d' = ((DoctypeParams' -> Token)
-> TokenizerOutput DoctypeParams' -> TokenizerOutput Token)
-> TokenizerOutput DoctypeParams'
-> (DoctypeParams' -> Token)
-> TokenizerOutput Token
forall a b c. (a -> b -> c) -> b -> a -> c
flip (DoctypeParams' -> Token)
-> TokenizerOutput DoctypeParams' -> TokenizerOutput Token
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap TokenizerOutput DoctypeParams'
d' ((DoctypeParams' -> Token) -> TokenizerOutput Token)
-> (DoctypeParams' -> Token) -> TokenizerOutput Token
forall a b. (a -> b) -> a -> b
$ \DoctypeParams'
d -> DoctypeParams -> Token
Doctype (DoctypeParams -> Token) -> DoctypeParams -> Token
forall a b. (a -> b) -> a -> b
$ DoctypeParams
emptyDoctypeParams
{ doctypeName :: Maybe Text
doctypeName = String -> Text
T.pack (String -> Text) -> Maybe String -> Maybe Text
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> DoctypeParams' -> Maybe String
doctypeName' DoctypeParams'
d
, doctypePublicId :: Maybe Text
doctypePublicId = String -> Text
T.pack (String -> Text) -> Maybe String -> Maybe Text
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> DoctypeParams' -> Maybe String
doctypePublicId' DoctypeParams'
d
, doctypeSystemId :: Maybe Text
doctypeSystemId = String -> Text
T.pack (String -> Text) -> Maybe String -> Maybe Text
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> DoctypeParams' -> Maybe String
doctypeSystemId' DoctypeParams'
d
, doctypeQuirks :: Bool
doctypeQuirks = DoctypeParams' -> Bool
doctypeQuirks' DoctypeParams'
d
}
ensurePublicId :: TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensurePublicId :: TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensurePublicId = (DoctypeParams' -> DoctypeParams')
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((DoctypeParams' -> DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> (DoctypeParams' -> DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall a b. (a -> b) -> a -> b
$ \DoctypeParams'
d -> DoctypeParams'
d
{ doctypePublicId' :: Maybe String
doctypePublicId' = DoctypeParams' -> Maybe String
doctypePublicId' DoctypeParams'
d Maybe String -> Maybe String -> Maybe String
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> String -> Maybe String
forall a. a -> Maybe a
Just String
""
}
ensureSystemId :: TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensureSystemId :: TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensureSystemId = (DoctypeParams' -> DoctypeParams')
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((DoctypeParams' -> DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> (DoctypeParams' -> DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall a b. (a -> b) -> a -> b
$ \DoctypeParams'
d -> DoctypeParams'
d
{ doctypeSystemId' :: Maybe String
doctypeSystemId' = DoctypeParams' -> Maybe String
doctypeSystemId' DoctypeParams'
d Maybe String -> Maybe String -> Maybe String
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> String -> Maybe String
forall a. a -> Maybe a
Just String
""
}
ensureQuirks :: TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensureQuirks :: TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensureQuirks = (DoctypeParams' -> DoctypeParams')
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((DoctypeParams' -> DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> (DoctypeParams' -> DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall a b. (a -> b) -> a -> b
$ \DoctypeParams'
d -> DoctypeParams'
d
{ doctypeQuirks' :: Bool
doctypeQuirks' = Bool
True
}
consDoctypeName :: Char -> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
consDoctypeName :: Char
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
consDoctypeName Char
c = (DoctypeParams' -> DoctypeParams')
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((DoctypeParams' -> DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> (DoctypeParams' -> DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall a b. (a -> b) -> a -> b
$ \DoctypeParams'
d -> DoctypeParams'
d
{ doctypeName' :: Maybe String
doctypeName' = ShowS -> Maybe String -> Maybe String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Char
c Char -> ShowS
forall a. a -> [a] -> [a]
:) (Maybe String -> Maybe String) -> Maybe String -> Maybe String
forall a b. (a -> b) -> a -> b
$ DoctypeParams' -> Maybe String
doctypeName' DoctypeParams'
d Maybe String -> Maybe String -> Maybe String
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> String -> Maybe String
forall a. a -> Maybe a
Just []
}
consPublicId :: Char -> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
consPublicId :: Char
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
consPublicId Char
c = (DoctypeParams' -> DoctypeParams')
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((DoctypeParams' -> DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> (DoctypeParams' -> DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall a b. (a -> b) -> a -> b
$ \DoctypeParams'
d -> DoctypeParams'
d
{ doctypePublicId' :: Maybe String
doctypePublicId' = ShowS -> Maybe String -> Maybe String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Char
c Char -> ShowS
forall a. a -> [a] -> [a]
:) (Maybe String -> Maybe String) -> Maybe String -> Maybe String
forall a b. (a -> b) -> a -> b
$ DoctypeParams' -> Maybe String
doctypePublicId' DoctypeParams'
d Maybe String -> Maybe String -> Maybe String
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> String -> Maybe String
forall a. a -> Maybe a
Just []
}
consSystemId :: Char -> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
consSystemId :: Char
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
consSystemId Char
c = (DoctypeParams' -> DoctypeParams')
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((DoctypeParams' -> DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> (DoctypeParams' -> DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall a b. (a -> b) -> a -> b
$ \DoctypeParams'
d -> DoctypeParams'
d
{ doctypeSystemId' :: Maybe String
doctypeSystemId' = ShowS -> Maybe String -> Maybe String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Char
c Char -> ShowS
forall a. a -> [a] -> [a]
:) (Maybe String -> Maybe String) -> Maybe String -> Maybe String
forall a b. (a -> b) -> a -> b
$ DoctypeParams' -> Maybe String
doctypeSystemId' DoctypeParams'
d Maybe String -> Maybe String -> Maybe String
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> String -> Maybe String
forall a. a -> Maybe a
Just []
}
tokenDoctype :: Tokenizer (TokenizerOutput Token)
tokenDoctype :: Tokenizer (TokenizerOutput Token)
tokenDoctype = Maybe ([ParseError], Token)
-> [SwitchCase TokenizerInput Tokenizer (WrappedOutput Token)]
-> Tokenizer (TokenizerOutput Token)
forall out.
Maybe ([ParseError], out)
-> [SwitchCase TokenizerInput Tokenizer (WrappedOutput out)]
-> Tokenizer (TokenizerOutput out)
tokenizer (([ParseError], Token) -> Maybe ([ParseError], Token)
forall a. a -> Maybe a
Just ([ParseError
EOFInDoctype], Token
quirksDoctype'))
[ (Char -> Bool)
-> Tokenizer (TokenizerOutput Token)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput Token)
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ Char -> Bool
isAsciiWhitespace (Tokenizer (TokenizerOutput Token)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput Token))
-> Tokenizer (TokenizerOutput Token)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput Token)
forall a b. (a -> b) -> a -> b
$ (TokenizerOutput DoctypeParams' -> TokenizerOutput Token)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> Tokenizer (TokenizerOutput Token)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap TokenizerOutput DoctypeParams' -> TokenizerOutput Token
packDoctypeToken StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBeforeDoctypeName
, (Char -> Bool)
-> Tokenizer (TokenizerOutput Token)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput Token)
forall out.
(Char -> Bool)
-> Tokenizer out
-> SwitchCase TokenizerInput Tokenizer (Wrapped out)
ifPush_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'>') (Tokenizer (TokenizerOutput Token)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput Token))
-> Tokenizer (TokenizerOutput Token)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput Token)
forall a b. (a -> b) -> a -> b
$ (TokenizerOutput DoctypeParams' -> TokenizerOutput Token)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> Tokenizer (TokenizerOutput Token)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap TokenizerOutput DoctypeParams' -> TokenizerOutput Token
packDoctypeToken StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBeforeDoctypeName
, Tokenizer (TokenizerOutput Token)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput Token)
forall out.
Tokenizer out -> SwitchCase TokenizerInput Tokenizer (Wrapped out)
elsePush_ (Tokenizer (TokenizerOutput Token)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput Token))
-> Tokenizer (TokenizerOutput Token)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput Token)
forall a b. (a -> b) -> a -> b
$ (TokenizerOutput DoctypeParams' -> TokenizerOutput Token)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> Tokenizer (TokenizerOutput Token)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (TokenizerOutput DoctypeParams' -> TokenizerOutput Token
packDoctypeToken (TokenizerOutput DoctypeParams' -> TokenizerOutput Token)
-> (TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput Token
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ParseError
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall out.
ParseError -> TokenizerOutput out -> TokenizerOutput out
consTokenError ParseError
MissingWhitespaceBeforeDoctypeName)
StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBeforeDoctypeName
]
where quirksDoctype' :: Token
quirksDoctype' = DoctypeParams -> Token
Doctype (DoctypeParams -> Token) -> DoctypeParams -> Token
forall a b. (a -> b) -> a -> b
$ DoctypeParams
emptyDoctypeParams
{ doctypeQuirks :: Bool
doctypeQuirks = Bool
True
}
tokenBeforeDoctypeName :: Tokenizer (TokenizerOutput DoctypeParams')
tokenBeforeDoctypeName :: StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBeforeDoctypeName = Maybe ([ParseError], DoctypeParams')
-> [SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')]
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out.
Maybe ([ParseError], out)
-> [SwitchCase TokenizerInput Tokenizer (WrappedOutput out)]
-> Tokenizer (TokenizerOutput out)
tokenizer (([ParseError], DoctypeParams')
-> Maybe ([ParseError], DoctypeParams')
forall a. a -> Maybe a
Just ([ParseError
EOFInDoctype], DoctypeParams'
quirksDoctype))
[ (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ Char -> Bool
isAsciiWhitespace StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBeforeDoctypeName
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'\NUL') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ ParseError
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall out.
ParseError -> TokenizerOutput out -> TokenizerOutput out
consTokenError ParseError
UnexpectedNullCharacter (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> (TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
consDoctypeName Char
replacementChar (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypeName
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'>') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ ([ParseError], DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out. ([ParseError], out) -> Tokenizer (TokenizerOutput out)
packToken ([ParseError
MissingDoctypeName], DoctypeParams'
quirksDoctype)
, (Char
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams'))
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Tokenizer (TokenizerOutput out))
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
elseChar ((Char
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams'))
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> (Char
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams'))
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ \Char
c -> Char
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
consDoctypeName (Char -> Char
toAsciiLower Char
c) (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypeName
]
tokenDoctypeName :: Tokenizer (TokenizerOutput DoctypeParams')
tokenDoctypeName :: StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypeName = Maybe ([ParseError], DoctypeParams')
-> [SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')]
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out.
Maybe ([ParseError], out)
-> [SwitchCase TokenizerInput Tokenizer (WrappedOutput out)]
-> Tokenizer (TokenizerOutput out)
tokenizer (([ParseError], DoctypeParams')
-> Maybe ([ParseError], DoctypeParams')
forall a. a -> Maybe a
Just ([ParseError
EOFInDoctype], DoctypeParams'
quirksDoctype))
[ (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ Char -> Bool
isAsciiWhitespace StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenAfterDoctypeName
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'>') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ CurrentTokenizerState -> Tokenizer ()
changeState CurrentTokenizerState
DataState Tokenizer ()
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> ([ParseError], DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out. ([ParseError], out) -> Tokenizer (TokenizerOutput out)
packToken ([], DoctypeParams'
emptyDoctypeData)
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'\NUL') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ ParseError
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall out.
ParseError -> TokenizerOutput out -> TokenizerOutput out
consTokenError ParseError
UnexpectedNullCharacter (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> (TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
consDoctypeName Char
replacementChar (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypeName
, (Char
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams'))
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Tokenizer (TokenizerOutput out))
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
elseChar ((Char
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams'))
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> (Char
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams'))
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ \Char
c -> Char
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
consDoctypeName (Char -> Char
toAsciiLower Char
c) (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypeName
]
tokenAfterDoctypeName :: Tokenizer (TokenizerOutput DoctypeParams')
tokenAfterDoctypeName :: StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenAfterDoctypeName = Maybe ([ParseError], DoctypeParams')
-> [SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')]
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out.
Maybe ([ParseError], out)
-> [SwitchCase TokenizerInput Tokenizer (WrappedOutput out)]
-> Tokenizer (TokenizerOutput out)
tokenizer (([ParseError], DoctypeParams')
-> Maybe ([ParseError], DoctypeParams')
forall a. a -> Maybe a
Just ([ParseError
EOFInDoctype], DoctypeParams'
quirksDoctype))
[ (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ Char -> Bool
isAsciiWhitespace StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenAfterDoctypeName
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'>') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ CurrentTokenizerState -> Tokenizer ()
changeState CurrentTokenizerState
DataState Tokenizer ()
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> ([ParseError], DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out. ([ParseError], out) -> Tokenizer (TokenizerOutput out)
packToken ([], DoctypeParams'
emptyDoctypeData)
, StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
Tokenizer out -> SwitchCase TokenizerInput Tokenizer (Wrapped out)
elsePush_ StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenAfterDoctypeName'
]
tokenAfterDoctypeName' :: Tokenizer (TokenizerOutput DoctypeParams')
tokenAfterDoctypeName' :: StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenAfterDoctypeName' = [StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')]
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (m :: * -> *) a. Alternative m => [m a] -> m a
choice
[ (Char -> Char) -> String -> Tokenizer [TokenizerInput]
chunk' Char -> Char
C.toUpper String
"PUBLIC" Tokenizer [TokenizerInput]
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenAfterDoctypePublicKeyword
, (Char -> Char) -> String -> Tokenizer [TokenizerInput]
chunk' Char -> Char
C.toUpper String
"SYSTEM" Tokenizer [TokenizerInput]
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenAfterDoctypeSystemKeyword
, ParseError
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall out.
ParseError -> TokenizerOutput out -> TokenizerOutput out
consTokenError ParseError
InvalidCharacterSequenceAfterDoctypeName (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> (TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensureQuirks (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBogusDoctype
]
tokenAfterDoctypePublicKeyword :: Tokenizer (TokenizerOutput DoctypeParams')
tokenAfterDoctypePublicKeyword :: StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenAfterDoctypePublicKeyword = Maybe ([ParseError], DoctypeParams')
-> [SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')]
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out.
Maybe ([ParseError], out)
-> [SwitchCase TokenizerInput Tokenizer (WrappedOutput out)]
-> Tokenizer (TokenizerOutput out)
tokenizer (([ParseError], DoctypeParams')
-> Maybe ([ParseError], DoctypeParams')
forall a. a -> Maybe a
Just ([ParseError
EOFInDoctype], DoctypeParams'
quirksDoctype))
[ (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ Char -> Bool
isAsciiWhitespace StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBeforeDoctypePublicIdentifier
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'"') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ ParseError
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall out.
ParseError -> TokenizerOutput out -> TokenizerOutput out
consTokenError ParseError
MissingWhitespaceAfterDoctypePublicKeyword (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> (TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensurePublicId (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypePublicIdentifierDoubleQuoted
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'\'') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ ParseError
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall out.
ParseError -> TokenizerOutput out -> TokenizerOutput out
consTokenError ParseError
MissingWhitespaceAfterDoctypePublicKeyword (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> (TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensurePublicId (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypePublicIdentifierSingleQuoted
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'>') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ CurrentTokenizerState -> Tokenizer ()
changeState CurrentTokenizerState
DataState Tokenizer ()
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*>
([ParseError], DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out. ([ParseError], out) -> Tokenizer (TokenizerOutput out)
packToken ([ParseError
MissingDoctypePublicIdentifier], DoctypeParams'
quirksDoctype)
, StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
Tokenizer out -> SwitchCase TokenizerInput Tokenizer (Wrapped out)
elsePush_ (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ ParseError
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall out.
ParseError -> TokenizerOutput out -> TokenizerOutput out
consTokenError ParseError
MissingQuoteBeforeDoctypePublicIdentifier (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> (TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensureQuirks (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBogusDoctype
]
tokenBeforeDoctypePublicIdentifier :: Tokenizer (TokenizerOutput DoctypeParams')
tokenBeforeDoctypePublicIdentifier :: StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBeforeDoctypePublicIdentifier = Maybe ([ParseError], DoctypeParams')
-> [SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')]
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out.
Maybe ([ParseError], out)
-> [SwitchCase TokenizerInput Tokenizer (WrappedOutput out)]
-> Tokenizer (TokenizerOutput out)
tokenizer (([ParseError], DoctypeParams')
-> Maybe ([ParseError], DoctypeParams')
forall a. a -> Maybe a
Just ([ParseError
EOFInDoctype], DoctypeParams'
quirksDoctype))
[ (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ Char -> Bool
isAsciiWhitespace StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBeforeDoctypePublicIdentifier
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'"') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensurePublicId StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypePublicIdentifierDoubleQuoted
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'\'') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensurePublicId StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypePublicIdentifierSingleQuoted
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'>') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ CurrentTokenizerState -> Tokenizer ()
changeState CurrentTokenizerState
DataState Tokenizer ()
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*>
([ParseError], DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out. ([ParseError], out) -> Tokenizer (TokenizerOutput out)
packToken ([ParseError
MissingDoctypePublicIdentifier], DoctypeParams'
quirksDoctype)
, StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
Tokenizer out -> SwitchCase TokenizerInput Tokenizer (Wrapped out)
elsePush_ (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ ParseError
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall out.
ParseError -> TokenizerOutput out -> TokenizerOutput out
consTokenError ParseError
MissingQuoteBeforeDoctypePublicIdentifier (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> (TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensureQuirks (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBogusDoctype
]
tokenDoctypePublicIdentifierDoubleQuoted :: Tokenizer (TokenizerOutput DoctypeParams')
tokenDoctypePublicIdentifierDoubleQuoted :: StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypePublicIdentifierDoubleQuoted = Maybe ([ParseError], DoctypeParams')
-> [SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')]
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out.
Maybe ([ParseError], out)
-> [SwitchCase TokenizerInput Tokenizer (WrappedOutput out)]
-> Tokenizer (TokenizerOutput out)
tokenizer (([ParseError], DoctypeParams')
-> Maybe ([ParseError], DoctypeParams')
forall a. a -> Maybe a
Just ([ParseError
EOFInDoctype], DoctypeParams'
quirksDoctype))
[ (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'"') StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenAfterDoctypePublicIdentifier
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'\NUL') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ ParseError
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall out.
ParseError -> TokenizerOutput out -> TokenizerOutput out
consTokenError ParseError
UnexpectedNullCharacter (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> (TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
consPublicId Char
replacementChar (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypePublicIdentifierDoubleQuoted
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'>') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ CurrentTokenizerState -> Tokenizer ()
changeState CurrentTokenizerState
DataState Tokenizer ()
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*>
([ParseError], DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out. ([ParseError], out) -> Tokenizer (TokenizerOutput out)
packToken ([ParseError
AbruptDoctypePublicIdentifier], DoctypeParams'
quirksDoctype)
, (Char
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams'))
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Tokenizer (TokenizerOutput out))
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
elseChar ((Char
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams'))
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> (Char
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams'))
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ \Char
c -> Char
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
consPublicId Char
c (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypePublicIdentifierDoubleQuoted
]
tokenDoctypePublicIdentifierSingleQuoted :: Tokenizer (TokenizerOutput DoctypeParams')
tokenDoctypePublicIdentifierSingleQuoted :: StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypePublicIdentifierSingleQuoted = Maybe ([ParseError], DoctypeParams')
-> [SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')]
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out.
Maybe ([ParseError], out)
-> [SwitchCase TokenizerInput Tokenizer (WrappedOutput out)]
-> Tokenizer (TokenizerOutput out)
tokenizer (([ParseError], DoctypeParams')
-> Maybe ([ParseError], DoctypeParams')
forall a. a -> Maybe a
Just ([ParseError
EOFInDoctype], DoctypeParams'
quirksDoctype))
[ (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'\'') StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenAfterDoctypePublicIdentifier
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'\NUL') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ ParseError
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall out.
ParseError -> TokenizerOutput out -> TokenizerOutput out
consTokenError ParseError
UnexpectedNullCharacter (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> (TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
consPublicId Char
replacementChar (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypePublicIdentifierSingleQuoted
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'>') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ CurrentTokenizerState -> Tokenizer ()
changeState CurrentTokenizerState
DataState Tokenizer ()
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*>
([ParseError], DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out. ([ParseError], out) -> Tokenizer (TokenizerOutput out)
packToken ([ParseError
AbruptDoctypePublicIdentifier], DoctypeParams'
quirksDoctype)
, (Char
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams'))
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Tokenizer (TokenizerOutput out))
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
elseChar ((Char
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams'))
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> (Char
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams'))
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ \Char
c -> Char
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
consPublicId Char
c (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypePublicIdentifierSingleQuoted
]
tokenAfterDoctypePublicIdentifier :: Tokenizer (TokenizerOutput DoctypeParams')
tokenAfterDoctypePublicIdentifier :: StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenAfterDoctypePublicIdentifier = Maybe ([ParseError], DoctypeParams')
-> [SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')]
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out.
Maybe ([ParseError], out)
-> [SwitchCase TokenizerInput Tokenizer (WrappedOutput out)]
-> Tokenizer (TokenizerOutput out)
tokenizer (([ParseError], DoctypeParams')
-> Maybe ([ParseError], DoctypeParams')
forall a. a -> Maybe a
Just ([ParseError
EOFInDoctype], DoctypeParams'
quirksDoctype))
[ (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ Char -> Bool
isAsciiWhitespace StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBetweenDoctypePublicAndSystemIdentifiers
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'>') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ CurrentTokenizerState -> Tokenizer ()
changeState CurrentTokenizerState
DataState Tokenizer ()
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> ([ParseError], DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out. ([ParseError], out) -> Tokenizer (TokenizerOutput out)
packToken ([], DoctypeParams'
emptyDoctypeData)
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'"') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$
ParseError
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall out.
ParseError -> TokenizerOutput out -> TokenizerOutput out
consTokenError ParseError
MissingWhitespaceBetweenDoctypePublicAndSystemIdentifiers (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> (TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensureSystemId (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypeSystemIdentifierDoubleQuoted
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'\'') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$
ParseError
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall out.
ParseError -> TokenizerOutput out -> TokenizerOutput out
consTokenError ParseError
MissingWhitespaceBetweenDoctypePublicAndSystemIdentifiers (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> (TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensureSystemId (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypeSystemIdentifierSingleQuoted
, StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
Tokenizer out -> SwitchCase TokenizerInput Tokenizer (Wrapped out)
elsePush_ (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$
ParseError
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall out.
ParseError -> TokenizerOutput out -> TokenizerOutput out
consTokenError ParseError
MissingQuoteBeforeDoctypeSystemIdentifier (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> (TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensureQuirks (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBogusDoctype
]
tokenBetweenDoctypePublicAndSystemIdentifiers :: Tokenizer (TokenizerOutput DoctypeParams')
tokenBetweenDoctypePublicAndSystemIdentifiers :: StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBetweenDoctypePublicAndSystemIdentifiers = Maybe ([ParseError], DoctypeParams')
-> [SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')]
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out.
Maybe ([ParseError], out)
-> [SwitchCase TokenizerInput Tokenizer (WrappedOutput out)]
-> Tokenizer (TokenizerOutput out)
tokenizer (([ParseError], DoctypeParams')
-> Maybe ([ParseError], DoctypeParams')
forall a. a -> Maybe a
Just ([ParseError
EOFInDoctype], DoctypeParams'
quirksDoctype))
[ (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ Char -> Bool
isAsciiWhitespace StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBetweenDoctypePublicAndSystemIdentifiers
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'>') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ CurrentTokenizerState -> Tokenizer ()
changeState CurrentTokenizerState
DataState Tokenizer ()
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> ([ParseError], DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out. ([ParseError], out) -> Tokenizer (TokenizerOutput out)
packToken ([], DoctypeParams'
emptyDoctypeData)
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'"') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensureSystemId StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypeSystemIdentifierDoubleQuoted
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'\'') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensureSystemId StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypeSystemIdentifierSingleQuoted
, StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
Tokenizer out -> SwitchCase TokenizerInput Tokenizer (Wrapped out)
elsePush_ (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ ParseError
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall out.
ParseError -> TokenizerOutput out -> TokenizerOutput out
consTokenError ParseError
MissingQuoteBeforeDoctypeSystemIdentifier (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> (TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensureQuirks (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBogusDoctype
]
tokenAfterDoctypeSystemKeyword :: Tokenizer (TokenizerOutput DoctypeParams')
tokenAfterDoctypeSystemKeyword :: StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenAfterDoctypeSystemKeyword = Maybe ([ParseError], DoctypeParams')
-> [SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')]
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out.
Maybe ([ParseError], out)
-> [SwitchCase TokenizerInput Tokenizer (WrappedOutput out)]
-> Tokenizer (TokenizerOutput out)
tokenizer (([ParseError], DoctypeParams')
-> Maybe ([ParseError], DoctypeParams')
forall a. a -> Maybe a
Just ([ParseError
EOFInDoctype], DoctypeParams'
quirksDoctype))
[ (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ Char -> Bool
isAsciiWhitespace StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBeforeDoctypeSystemIdentifier
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'"') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ ParseError
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall out.
ParseError -> TokenizerOutput out -> TokenizerOutput out
consTokenError ParseError
MissingWhitespaceAfterDoctypeSystemKeyword (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> (TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensureSystemId (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypeSystemIdentifierDoubleQuoted
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'\'') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ ParseError
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall out.
ParseError -> TokenizerOutput out -> TokenizerOutput out
consTokenError ParseError
MissingWhitespaceAfterDoctypeSystemKeyword (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> (TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensureSystemId (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypeSystemIdentifierSingleQuoted
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'>') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ CurrentTokenizerState -> Tokenizer ()
changeState CurrentTokenizerState
DataState Tokenizer ()
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*>
([ParseError], DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out. ([ParseError], out) -> Tokenizer (TokenizerOutput out)
packToken ([ParseError
MissingDoctypeSystemIdentifier], DoctypeParams'
quirksDoctype)
, StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
Tokenizer out -> SwitchCase TokenizerInput Tokenizer (Wrapped out)
elsePush_ (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ ParseError
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall out.
ParseError -> TokenizerOutput out -> TokenizerOutput out
consTokenError ParseError
MissingQuoteBeforeDoctypeSystemIdentifier (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> (TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensureQuirks (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBogusDoctype
]
tokenBeforeDoctypeSystemIdentifier :: Tokenizer (TokenizerOutput DoctypeParams')
tokenBeforeDoctypeSystemIdentifier :: StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBeforeDoctypeSystemIdentifier = Maybe ([ParseError], DoctypeParams')
-> [SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')]
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out.
Maybe ([ParseError], out)
-> [SwitchCase TokenizerInput Tokenizer (WrappedOutput out)]
-> Tokenizer (TokenizerOutput out)
tokenizer (([ParseError], DoctypeParams')
-> Maybe ([ParseError], DoctypeParams')
forall a. a -> Maybe a
Just ([ParseError
EOFInDoctype], DoctypeParams'
quirksDoctype))
[ (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ Char -> Bool
isAsciiWhitespace StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBeforeDoctypeSystemIdentifier
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'"') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensureSystemId StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypeSystemIdentifierDoubleQuoted
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'\'') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensureSystemId StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypeSystemIdentifierSingleQuoted
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'>') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ CurrentTokenizerState -> Tokenizer ()
changeState CurrentTokenizerState
DataState Tokenizer ()
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*>
([ParseError], DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out. ([ParseError], out) -> Tokenizer (TokenizerOutput out)
packToken ([ParseError
MissingDoctypeSystemIdentifier], DoctypeParams'
quirksDoctype)
, StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
Tokenizer out -> SwitchCase TokenizerInput Tokenizer (Wrapped out)
elsePush_ (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ ParseError
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall out.
ParseError -> TokenizerOutput out -> TokenizerOutput out
consTokenError ParseError
MissingQuoteBeforeDoctypeSystemIdentifier (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> (TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
ensureQuirks (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBogusDoctype
]
tokenDoctypeSystemIdentifierDoubleQuoted :: Tokenizer (TokenizerOutput DoctypeParams')
tokenDoctypeSystemIdentifierDoubleQuoted :: StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypeSystemIdentifierDoubleQuoted = Maybe ([ParseError], DoctypeParams')
-> [SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')]
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out.
Maybe ([ParseError], out)
-> [SwitchCase TokenizerInput Tokenizer (WrappedOutput out)]
-> Tokenizer (TokenizerOutput out)
tokenizer (([ParseError], DoctypeParams')
-> Maybe ([ParseError], DoctypeParams')
forall a. a -> Maybe a
Just ([ParseError
EOFInDoctype], DoctypeParams'
quirksDoctype))
[ (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'"') StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenAfterDoctypeSystemIdentifier
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'\NUL') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ ParseError
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall out.
ParseError -> TokenizerOutput out -> TokenizerOutput out
consTokenError ParseError
UnexpectedNullCharacter (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> (TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
consSystemId Char
replacementChar (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypeSystemIdentifierDoubleQuoted
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'>') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ CurrentTokenizerState -> Tokenizer ()
changeState CurrentTokenizerState
DataState Tokenizer ()
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*>
([ParseError], DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out. ([ParseError], out) -> Tokenizer (TokenizerOutput out)
packToken ([ParseError
AbruptDoctypeSystemIdentifier], DoctypeParams'
quirksDoctype)
, (Char
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams'))
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Tokenizer (TokenizerOutput out))
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
elseChar ((Char
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams'))
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> (Char
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams'))
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ \Char
c -> Char
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
consSystemId Char
c (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypeSystemIdentifierDoubleQuoted
]
tokenDoctypeSystemIdentifierSingleQuoted :: Tokenizer (TokenizerOutput DoctypeParams')
tokenDoctypeSystemIdentifierSingleQuoted :: StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypeSystemIdentifierSingleQuoted = Maybe ([ParseError], DoctypeParams')
-> [SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')]
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out.
Maybe ([ParseError], out)
-> [SwitchCase TokenizerInput Tokenizer (WrappedOutput out)]
-> Tokenizer (TokenizerOutput out)
tokenizer (([ParseError], DoctypeParams')
-> Maybe ([ParseError], DoctypeParams')
forall a. a -> Maybe a
Just ([ParseError
EOFInDoctype], DoctypeParams'
quirksDoctype))
[ (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'\'') StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenAfterDoctypeSystemIdentifier
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'\NUL') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ ParseError
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall out.
ParseError -> TokenizerOutput out -> TokenizerOutput out
consTokenError ParseError
UnexpectedNullCharacter (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> (TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams')
-> TokenizerOutput DoctypeParams'
-> TokenizerOutput DoctypeParams'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
consSystemId Char
replacementChar (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypeSystemIdentifierSingleQuoted
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'>') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ CurrentTokenizerState -> Tokenizer ()
changeState CurrentTokenizerState
DataState Tokenizer ()
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*>
([ParseError], DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out. ([ParseError], out) -> Tokenizer (TokenizerOutput out)
packToken ([ParseError
AbruptDoctypeSystemIdentifier], DoctypeParams'
quirksDoctype)
, (Char
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams'))
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Tokenizer (TokenizerOutput out))
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
elseChar ((Char
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams'))
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> (Char
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams'))
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ \Char
c -> Char
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
consSystemId Char
c (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenDoctypeSystemIdentifierSingleQuoted
]
tokenAfterDoctypeSystemIdentifier :: Tokenizer (TokenizerOutput DoctypeParams')
tokenAfterDoctypeSystemIdentifier :: StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenAfterDoctypeSystemIdentifier = Maybe ([ParseError], DoctypeParams')
-> [SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')]
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out.
Maybe ([ParseError], out)
-> [SwitchCase TokenizerInput Tokenizer (WrappedOutput out)]
-> Tokenizer (TokenizerOutput out)
tokenizer (([ParseError], DoctypeParams')
-> Maybe ([ParseError], DoctypeParams')
forall a. a -> Maybe a
Just ([ParseError
EOFInDoctype], DoctypeParams'
quirksDoctype))
[ (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ Char -> Bool
isAsciiWhitespace StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenAfterDoctypeSystemIdentifier
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'>') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ CurrentTokenizerState -> Tokenizer ()
changeState CurrentTokenizerState
DataState Tokenizer ()
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> ([ParseError], DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out. ([ParseError], out) -> Tokenizer (TokenizerOutput out)
packToken ([], DoctypeParams'
emptyDoctypeData)
, (Char
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams'))
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Tokenizer out)
-> SwitchCase TokenizerInput Tokenizer (Wrapped out)
elsePushChar ((Char
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams'))
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> (Char
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams'))
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ \Char
c -> ParseError
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall out.
ParseError -> TokenizerOutput out -> TokenizerOutput out
consTokenError (Char -> ParseError
UnexpectedCharacterAfterDoctypeSystemIdentifier Char
c) (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBogusDoctype
]
tokenBogusDoctype :: Tokenizer (TokenizerOutput DoctypeParams')
tokenBogusDoctype :: StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBogusDoctype = Maybe ([ParseError], DoctypeParams')
-> [SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')]
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out.
Maybe ([ParseError], out)
-> [SwitchCase TokenizerInput Tokenizer (WrappedOutput out)]
-> Tokenizer (TokenizerOutput out)
tokenizer (([ParseError], DoctypeParams')
-> Maybe ([ParseError], DoctypeParams')
forall a. a -> Maybe a
Just ([], DoctypeParams'
emptyDoctypeData))
[ (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'>') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ CurrentTokenizerState -> Tokenizer ()
changeState CurrentTokenizerState
DataState Tokenizer ()
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> ([ParseError], DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall out. ([ParseError], out) -> Tokenizer (TokenizerOutput out)
packToken ([], DoctypeParams'
emptyDoctypeData)
, (Char -> Bool)
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'\NUL') (StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams'))
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall a b. (a -> b) -> a -> b
$ ParseError
-> TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams'
forall out.
ParseError -> TokenizerOutput out -> TokenizerOutput out
consTokenError ParseError
UnexpectedNullCharacter (TokenizerOutput DoctypeParams' -> TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBogusDoctype
, StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
-> SwitchCase
TokenizerInput Tokenizer (WrappedOutput DoctypeParams')
forall out.
Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
else_ StateT
TokenParserState
(Parser [TokenizerInput])
(TokenizerOutput DoctypeParams')
tokenBogusDoctype
]