{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiWayIf #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Zenacy.HTML.Internal.Parser
( Parser(..)
, ParserOptions(..)
, ParserResult(..)
, parseDocument
, parseFragment
) where
import Zenacy.HTML.Internal.BS
import Zenacy.HTML.Internal.Buffer
import Zenacy.HTML.Internal.Char
import Zenacy.HTML.Internal.Core
import Zenacy.HTML.Internal.DOM
import Zenacy.HTML.Internal.Lexer
import Zenacy.HTML.Internal.Token
import Zenacy.HTML.Internal.Types
import Control.Applicative
( liftA
)
import Control.Monad
( when
, unless
, void
)
import Control.Monad.Extra
( (||^)
, (&&^)
, anyM
, notM
, whenM
, whenJustM
, unlessM
)
import Control.Monad.ST
( ST
, runST
)
import Data.Default
( Default(..)
)
import Data.DList
( DList
)
import qualified Data.DList as D
( append
, empty
, snoc
, toList
)
import Data.IntMap
( IntMap
)
import qualified Data.IntMap as IntMap
( findWithDefault
, lookup
, insert
, map
, mapWithKey
)
import Data.List
( find
)
import Data.Map
( Map
)
import qualified Data.Map as Map
( fromList
, lookup
)
import Data.Maybe
( fromJust
, isJust
, isNothing
, listToMaybe
, mapMaybe
)
import Data.Monoid
( (<>)
)
import Data.Sequence
( Seq
)
import qualified Data.Sequence as Seq
( empty
, fromList
)
import Data.Set
( Set
)
import qualified Data.Set as Set
( fromList
, member
, notMember
, union
, unions
)
import Data.STRef
( STRef
, newSTRef
, readSTRef
, writeSTRef
)
import Data.Word
( Word8
)
data Parser s = Parser
{ forall s. Parser s -> STRef s (Lexer s)
parserLexer :: STRef s (Lexer s)
, forall s. Parser s -> STRef s DOM
parserDOM :: STRef s DOM
, forall s. Parser s -> STRef s [DOMID]
parserElementStack :: STRef s [DOMID]
, forall s. Parser s -> STRef s [ParserFormatItem]
parserActiveFormatList :: STRef s [ParserFormatItem]
, forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
, forall s. Parser s -> STRef s ParserMode
parserOriginalMode :: STRef s ParserMode
, forall s. Parser s -> STRef s [ParserMode]
parserTemplateMode :: STRef s [ParserMode]
, forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
, forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
, forall s. Parser s -> STRef s (Maybe DOMID)
parserFormElement :: STRef s (Maybe DOMID)
, forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: STRef s Bool
, forall s. Parser s -> STRef s Bool
parserFragmentMode :: STRef s Bool
, forall s. Parser s -> STRef s Bool
parserFosterParenting :: STRef s Bool
, forall s. Parser s -> STRef s Bool
parserFrameSetOK :: STRef s Bool
, forall s. Parser s -> STRef s Bool
parserDone :: STRef s Bool
, forall s. Parser s -> STRef s [Token]
parserTableChars :: STRef s [Token]
, forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
, forall s. Parser s -> STRef s (DList BS)
parserErrors :: STRef s (DList BS)
, forall s. Parser s -> STRef s Bool
parserIFrameSrcDoc :: STRef s Bool
, forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
, forall s. Parser s -> Bool
parserLogErrors :: Bool
}
data ParserMode
= ModeInitial
| ModeBeforeHtml
| ModeBeforeHead
| ModeInHead
| ModeInHeadNoscript
| ModeAfterHead
| ModeInBody
| ModeText
| ModeInTable
| ModeInTableText
| ModeInCaption
| ModeInColumnGroup
| ModeInTableBody
| ModeInRow
| ModeInCell
| ModeInSelect
| ModeInSelectInTable
| ModeInTemplate
| ModeAfterBody
| ModeInFrameset
| ModeAfterFrameset
| ModeAfterAfterBody
| ModeAfterAfterFrameset
deriving (ParserMode -> ParserMode -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ParserMode -> ParserMode -> Bool
$c/= :: ParserMode -> ParserMode -> Bool
== :: ParserMode -> ParserMode -> Bool
$c== :: ParserMode -> ParserMode -> Bool
Eq, Eq ParserMode
ParserMode -> ParserMode -> Bool
ParserMode -> ParserMode -> Ordering
ParserMode -> ParserMode -> ParserMode
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ParserMode -> ParserMode -> ParserMode
$cmin :: ParserMode -> ParserMode -> ParserMode
max :: ParserMode -> ParserMode -> ParserMode
$cmax :: ParserMode -> ParserMode -> ParserMode
>= :: ParserMode -> ParserMode -> Bool
$c>= :: ParserMode -> ParserMode -> Bool
> :: ParserMode -> ParserMode -> Bool
$c> :: ParserMode -> ParserMode -> Bool
<= :: ParserMode -> ParserMode -> Bool
$c<= :: ParserMode -> ParserMode -> Bool
< :: ParserMode -> ParserMode -> Bool
$c< :: ParserMode -> ParserMode -> Bool
compare :: ParserMode -> ParserMode -> Ordering
$ccompare :: ParserMode -> ParserMode -> Ordering
Ord, DOMID -> ParserMode -> ShowS
[ParserMode] -> ShowS
ParserMode -> String
forall a.
(DOMID -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ParserMode] -> ShowS
$cshowList :: [ParserMode] -> ShowS
show :: ParserMode -> String
$cshow :: ParserMode -> String
showsPrec :: DOMID -> ParserMode -> ShowS
$cshowsPrec :: DOMID -> ParserMode -> ShowS
Show)
data ParserOptions = ParserOptions
{ ParserOptions -> BS
parserOptionInput :: BS
, ParserOptions -> Bool
parserOptionLogErrors :: Bool
, ParserOptions -> Bool
parserOptionIgnoreEntities :: Bool
} deriving (ParserOptions -> ParserOptions -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ParserOptions -> ParserOptions -> Bool
$c/= :: ParserOptions -> ParserOptions -> Bool
== :: ParserOptions -> ParserOptions -> Bool
$c== :: ParserOptions -> ParserOptions -> Bool
Eq, Eq ParserOptions
ParserOptions -> ParserOptions -> Bool
ParserOptions -> ParserOptions -> Ordering
ParserOptions -> ParserOptions -> ParserOptions
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ParserOptions -> ParserOptions -> ParserOptions
$cmin :: ParserOptions -> ParserOptions -> ParserOptions
max :: ParserOptions -> ParserOptions -> ParserOptions
$cmax :: ParserOptions -> ParserOptions -> ParserOptions
>= :: ParserOptions -> ParserOptions -> Bool
$c>= :: ParserOptions -> ParserOptions -> Bool
> :: ParserOptions -> ParserOptions -> Bool
$c> :: ParserOptions -> ParserOptions -> Bool
<= :: ParserOptions -> ParserOptions -> Bool
$c<= :: ParserOptions -> ParserOptions -> Bool
< :: ParserOptions -> ParserOptions -> Bool
$c< :: ParserOptions -> ParserOptions -> Bool
compare :: ParserOptions -> ParserOptions -> Ordering
$ccompare :: ParserOptions -> ParserOptions -> Ordering
Ord, DOMID -> ParserOptions -> ShowS
[ParserOptions] -> ShowS
ParserOptions -> String
forall a.
(DOMID -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ParserOptions] -> ShowS
$cshowList :: [ParserOptions] -> ShowS
show :: ParserOptions -> String
$cshow :: ParserOptions -> String
showsPrec :: DOMID -> ParserOptions -> ShowS
$cshowsPrec :: DOMID -> ParserOptions -> ShowS
Show)
data ParserResult = ParserResult
{ ParserResult -> DOM
parserResultDOM :: DOM
, ParserResult -> [BS]
parserResultErrors :: [BS]
} deriving (ParserResult -> ParserResult -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ParserResult -> ParserResult -> Bool
$c/= :: ParserResult -> ParserResult -> Bool
== :: ParserResult -> ParserResult -> Bool
$c== :: ParserResult -> ParserResult -> Bool
Eq, Eq ParserResult
ParserResult -> ParserResult -> Bool
ParserResult -> ParserResult -> Ordering
ParserResult -> ParserResult -> ParserResult
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ParserResult -> ParserResult -> ParserResult
$cmin :: ParserResult -> ParserResult -> ParserResult
max :: ParserResult -> ParserResult -> ParserResult
$cmax :: ParserResult -> ParserResult -> ParserResult
>= :: ParserResult -> ParserResult -> Bool
$c>= :: ParserResult -> ParserResult -> Bool
> :: ParserResult -> ParserResult -> Bool
$c> :: ParserResult -> ParserResult -> Bool
<= :: ParserResult -> ParserResult -> Bool
$c<= :: ParserResult -> ParserResult -> Bool
< :: ParserResult -> ParserResult -> Bool
$c< :: ParserResult -> ParserResult -> Bool
compare :: ParserResult -> ParserResult -> Ordering
$ccompare :: ParserResult -> ParserResult -> Ordering
Ord, DOMID -> ParserResult -> ShowS
[ParserResult] -> ShowS
ParserResult -> String
forall a.
(DOMID -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ParserResult] -> ShowS
$cshowList :: [ParserResult] -> ShowS
show :: ParserResult -> String
$cshow :: ParserResult -> String
showsPrec :: DOMID -> ParserResult -> ShowS
$cshowsPrec :: DOMID -> ParserResult -> ShowS
Show)
data ParserFormatItem
= ParserFormatElement DOMID Token
| ParserFormatMarker
deriving (ParserFormatItem -> ParserFormatItem -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ParserFormatItem -> ParserFormatItem -> Bool
$c/= :: ParserFormatItem -> ParserFormatItem -> Bool
== :: ParserFormatItem -> ParserFormatItem -> Bool
$c== :: ParserFormatItem -> ParserFormatItem -> Bool
Eq, Eq ParserFormatItem
ParserFormatItem -> ParserFormatItem -> Bool
ParserFormatItem -> ParserFormatItem -> Ordering
ParserFormatItem -> ParserFormatItem -> ParserFormatItem
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ParserFormatItem -> ParserFormatItem -> ParserFormatItem
$cmin :: ParserFormatItem -> ParserFormatItem -> ParserFormatItem
max :: ParserFormatItem -> ParserFormatItem -> ParserFormatItem
$cmax :: ParserFormatItem -> ParserFormatItem -> ParserFormatItem
>= :: ParserFormatItem -> ParserFormatItem -> Bool
$c>= :: ParserFormatItem -> ParserFormatItem -> Bool
> :: ParserFormatItem -> ParserFormatItem -> Bool
$c> :: ParserFormatItem -> ParserFormatItem -> Bool
<= :: ParserFormatItem -> ParserFormatItem -> Bool
$c<= :: ParserFormatItem -> ParserFormatItem -> Bool
< :: ParserFormatItem -> ParserFormatItem -> Bool
$c< :: ParserFormatItem -> ParserFormatItem -> Bool
compare :: ParserFormatItem -> ParserFormatItem -> Ordering
$ccompare :: ParserFormatItem -> ParserFormatItem -> Ordering
Ord, DOMID -> ParserFormatItem -> ShowS
[ParserFormatItem] -> ShowS
ParserFormatItem -> String
forall a.
(DOMID -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ParserFormatItem] -> ShowS
$cshowList :: [ParserFormatItem] -> ShowS
show :: ParserFormatItem -> String
$cshow :: ParserFormatItem -> String
showsPrec :: DOMID -> ParserFormatItem -> ShowS
$cshowsPrec :: DOMID -> ParserFormatItem -> ShowS
Show)
data ParserElementCategory
= ElementCategorySpecial
| ElementCategoryFormatting
| ElementCategoryOrdinary
deriving (ParserElementCategory -> ParserElementCategory -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ParserElementCategory -> ParserElementCategory -> Bool
$c/= :: ParserElementCategory -> ParserElementCategory -> Bool
== :: ParserElementCategory -> ParserElementCategory -> Bool
$c== :: ParserElementCategory -> ParserElementCategory -> Bool
Eq, Eq ParserElementCategory
ParserElementCategory -> ParserElementCategory -> Bool
ParserElementCategory -> ParserElementCategory -> Ordering
ParserElementCategory
-> ParserElementCategory -> ParserElementCategory
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ParserElementCategory
-> ParserElementCategory -> ParserElementCategory
$cmin :: ParserElementCategory
-> ParserElementCategory -> ParserElementCategory
max :: ParserElementCategory
-> ParserElementCategory -> ParserElementCategory
$cmax :: ParserElementCategory
-> ParserElementCategory -> ParserElementCategory
>= :: ParserElementCategory -> ParserElementCategory -> Bool
$c>= :: ParserElementCategory -> ParserElementCategory -> Bool
> :: ParserElementCategory -> ParserElementCategory -> Bool
$c> :: ParserElementCategory -> ParserElementCategory -> Bool
<= :: ParserElementCategory -> ParserElementCategory -> Bool
$c<= :: ParserElementCategory -> ParserElementCategory -> Bool
< :: ParserElementCategory -> ParserElementCategory -> Bool
$c< :: ParserElementCategory -> ParserElementCategory -> Bool
compare :: ParserElementCategory -> ParserElementCategory -> Ordering
$ccompare :: ParserElementCategory -> ParserElementCategory -> Ordering
Ord, DOMID -> ParserElementCategory -> ShowS
[ParserElementCategory] -> ShowS
ParserElementCategory -> String
forall a.
(DOMID -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ParserElementCategory] -> ShowS
$cshowList :: [ParserElementCategory] -> ShowS
show :: ParserElementCategory -> String
$cshow :: ParserElementCategory -> String
showsPrec :: DOMID -> ParserElementCategory -> ShowS
$cshowsPrec :: DOMID -> ParserElementCategory -> ShowS
Show)
data ElementDetails = ElementDetails
{ ElementDetails -> DOMID
elementDetailsIndex :: Int
, ElementDetails -> DOMID
elementDetailsID :: DOMID
, ElementDetails -> DOMNode
elementDetailsNode :: DOMNode
, ElementDetails -> DOMType
elementDetailsType :: DOMType
} deriving (ElementDetails -> ElementDetails -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ElementDetails -> ElementDetails -> Bool
$c/= :: ElementDetails -> ElementDetails -> Bool
== :: ElementDetails -> ElementDetails -> Bool
$c== :: ElementDetails -> ElementDetails -> Bool
Eq, Eq ElementDetails
ElementDetails -> ElementDetails -> Bool
ElementDetails -> ElementDetails -> Ordering
ElementDetails -> ElementDetails -> ElementDetails
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ElementDetails -> ElementDetails -> ElementDetails
$cmin :: ElementDetails -> ElementDetails -> ElementDetails
max :: ElementDetails -> ElementDetails -> ElementDetails
$cmax :: ElementDetails -> ElementDetails -> ElementDetails
>= :: ElementDetails -> ElementDetails -> Bool
$c>= :: ElementDetails -> ElementDetails -> Bool
> :: ElementDetails -> ElementDetails -> Bool
$c> :: ElementDetails -> ElementDetails -> Bool
<= :: ElementDetails -> ElementDetails -> Bool
$c<= :: ElementDetails -> ElementDetails -> Bool
< :: ElementDetails -> ElementDetails -> Bool
$c< :: ElementDetails -> ElementDetails -> Bool
compare :: ElementDetails -> ElementDetails -> Ordering
$ccompare :: ElementDetails -> ElementDetails -> Ordering
Ord, DOMID -> ElementDetails -> ShowS
[ElementDetails] -> ShowS
ElementDetails -> String
forall a.
(DOMID -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ElementDetails] -> ShowS
$cshowList :: [ElementDetails] -> ShowS
show :: ElementDetails -> String
$cshow :: ElementDetails -> String
showsPrec :: DOMID -> ElementDetails -> ShowS
$cshowsPrec :: DOMID -> ElementDetails -> ShowS
Show)
instance Default ParserOptions where
def :: ParserOptions
def = ParserOptions
{ parserOptionInput :: BS
parserOptionInput = BS
bsEmpty
, parserOptionLogErrors :: Bool
parserOptionLogErrors = Bool
False
, parserOptionIgnoreEntities :: Bool
parserOptionIgnoreEntities = Bool
False
}
instance Default ParserResult where
def :: ParserResult
def = ParserResult
{ parserResultDOM :: DOM
parserResultDOM = forall a. Default a => a
def
, parserResultErrors :: [BS]
parserResultErrors = []
}
parseDocument :: ParserOptions -> Either BS ParserResult
parseDocument :: ParserOptions -> Either BS ParserResult
parseDocument ParserOptions
x =
forall a. (forall s. ST s a) -> a
runST forall a b. (a -> b) -> a -> b
$ do
forall s. ParserOptions -> ST s (Either BS (Parser s))
parserNew ParserOptions
x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Right Parser s
p -> forall a b. b -> Either a b
Right forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s ParserResult
parserRun Parser s
p
Left BS
e -> forall a b. a -> Either a b
Left forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (f :: * -> *) a. Applicative f => a -> f a
pure BS
e
parseFragment :: ParserOptions -> Either BS ParserResult
parseFragment :: ParserOptions -> Either BS ParserResult
parseFragment ParserOptions
x = forall a b. a -> Either a b
Left BS
"fragment support not yet implemented"
parserNew :: ParserOptions -> ST s (Either BS (Parser s))
parserNew :: forall s. ParserOptions -> ST s (Either BS (Parser s))
parserNew o :: ParserOptions
o@ParserOptions{Bool
BS
parserOptionIgnoreEntities :: Bool
parserOptionLogErrors :: Bool
parserOptionInput :: BS
parserOptionIgnoreEntities :: ParserOptions -> Bool
parserOptionLogErrors :: ParserOptions -> Bool
parserOptionInput :: ParserOptions -> BS
..} = do
Either BS (Lexer s)
a <- forall s. LexerOptions -> ST s (Either BS (Lexer s))
lexerNew forall a. Default a => a
def
{ lexerOptionInput :: BS
lexerOptionInput = BS
parserOptionInput
, lexerOptionLogErrors :: Bool
lexerOptionLogErrors = Bool
parserOptionLogErrors
, lexerOptionIgnoreEntities :: Bool
lexerOptionIgnoreEntities = Bool
parserOptionIgnoreEntities
}
case Either BS (Lexer s)
a of
Right Lexer s
lex -> forall a b. b -> Either a b
Right forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. ParserOptions -> Lexer s -> ST s (Parser s)
parserMake ParserOptions
o Lexer s
lex
Left BS
err -> forall a b. a -> Either a b
Left forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (f :: * -> *) a. Applicative f => a -> f a
pure BS
err
parserMake :: ParserOptions -> Lexer s -> ST s (Parser s)
parserMake :: forall s. ParserOptions -> Lexer s -> ST s (Parser s)
parserMake ParserOptions{Bool
BS
parserOptionIgnoreEntities :: Bool
parserOptionLogErrors :: Bool
parserOptionInput :: BS
parserOptionIgnoreEntities :: ParserOptions -> Bool
parserOptionLogErrors :: ParserOptions -> Bool
parserOptionInput :: ParserOptions -> BS
..} Lexer s
lexer = do
STRef s (Lexer s)
lexerRef <- forall a s. a -> ST s (STRef s a)
newSTRef Lexer s
lexer
STRef s DOM
dom <- forall a s. a -> ST s (STRef s a)
newSTRef forall a. Default a => a
def
STRef s [DOMID]
stack <- forall a s. a -> ST s (STRef s a)
newSTRef []
STRef s [ParserFormatItem]
fmtList <- forall a s. a -> ST s (STRef s a)
newSTRef []
STRef s ParserMode
insMode <- forall a s. a -> ST s (STRef s a)
newSTRef ParserMode
ModeInitial
STRef s ParserMode
orgMode <- forall a s. a -> ST s (STRef s a)
newSTRef ParserMode
ModeInitial
STRef s [ParserMode]
tmpMode <- forall a s. a -> ST s (STRef s a)
newSTRef []
STRef s (Maybe DOMID)
ctxElem <- forall a s. a -> ST s (STRef s a)
newSTRef forall a. Maybe a
Nothing
STRef s (Maybe DOMID)
headElem <- forall a s. a -> ST s (STRef s a)
newSTRef forall a. Maybe a
Nothing
STRef s (Maybe DOMID)
formElem <- forall a s. a -> ST s (STRef s a)
newSTRef forall a. Maybe a
Nothing
STRef s Bool
closing <- forall a s. a -> ST s (STRef s a)
newSTRef Bool
False
STRef s Bool
fragMode <- forall a s. a -> ST s (STRef s a)
newSTRef Bool
False
STRef s Bool
foster <- forall a s. a -> ST s (STRef s a)
newSTRef Bool
False
STRef s Bool
frameSet <- forall a s. a -> ST s (STRef s a)
newSTRef Bool
True
STRef s Bool
done <- forall a s. a -> ST s (STRef s a)
newSTRef Bool
False
STRef s [Token]
table <- forall a s. a -> ST s (STRef s a)
newSTRef []
ParserAdoptionAgency s
aa <- forall s. ST s (ParserAdoptionAgency s)
defaultAA
STRef s (ParserAdoptionAgency s)
aaRef <- forall a s. a -> ST s (STRef s a)
newSTRef ParserAdoptionAgency s
aa
STRef s (DList BS)
warn <- forall a s. a -> ST s (STRef s a)
newSTRef forall a. Default a => a
def
STRef s Bool
iframe <- forall a s. a -> ST s (STRef s a)
newSTRef Bool
False
STRef s (IntMap (STRef s (Buffer s)))
textMap <- forall a s. a -> ST s (STRef s a)
newSTRef forall a. Default a => a
def
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ Parser
{ parserLexer :: STRef s (Lexer s)
parserLexer = STRef s (Lexer s)
lexerRef
, parserDOM :: STRef s DOM
parserDOM = STRef s DOM
dom
, parserElementStack :: STRef s [DOMID]
parserElementStack = STRef s [DOMID]
stack
, parserActiveFormatList :: STRef s [ParserFormatItem]
parserActiveFormatList = STRef s [ParserFormatItem]
fmtList
, parserInsertionMode :: STRef s ParserMode
parserInsertionMode = STRef s ParserMode
insMode
, parserOriginalMode :: STRef s ParserMode
parserOriginalMode = STRef s ParserMode
orgMode
, parserTemplateMode :: STRef s [ParserMode]
parserTemplateMode = STRef s [ParserMode]
tmpMode
, parserContextElement :: STRef s (Maybe DOMID)
parserContextElement = STRef s (Maybe DOMID)
ctxElem
, parserHeadElement :: STRef s (Maybe DOMID)
parserHeadElement = STRef s (Maybe DOMID)
headElem
, parserFormElement :: STRef s (Maybe DOMID)
parserFormElement = STRef s (Maybe DOMID)
formElem
, parserSelfClosingFlag :: STRef s Bool
parserSelfClosingFlag = STRef s Bool
closing
, parserFragmentMode :: STRef s Bool
parserFragmentMode = STRef s Bool
fragMode
, parserFosterParenting :: STRef s Bool
parserFosterParenting = STRef s Bool
foster
, parserFrameSetOK :: STRef s Bool
parserFrameSetOK = STRef s Bool
frameSet
, parserDone :: STRef s Bool
parserDone = STRef s Bool
done
, parserTableChars :: STRef s [Token]
parserTableChars = STRef s [Token]
table
, parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserAdoptionAgency = STRef s (ParserAdoptionAgency s)
aaRef
, parserErrors :: STRef s (DList BS)
parserErrors = STRef s (DList BS)
warn
, parserIFrameSrcDoc :: STRef s Bool
parserIFrameSrcDoc = STRef s Bool
iframe
, parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserTextMap = STRef s (IntMap (STRef s (Buffer s)))
textMap
, parserLogErrors :: Bool
parserLogErrors = Bool
parserOptionLogErrors
}
parserRun :: Parser s -> ST s ParserResult
parserRun :: forall s. Parser s -> ST s ParserResult
parserRun p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = do
forall s a. STRef s a -> ST s a
rref STRef s Bool
parserDone forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
True -> do
Lexer{Bool
STRef s DOMID
STRef s [Word8]
STRef s (DList BS)
STRef s (Buffer s)
STRef s (TokenBuffer s)
STRef s LexerState
STRef s LexerSkip
BS
lexerCode :: forall s. Lexer s -> STRef s DOMID
lexerErrors :: forall s. Lexer s -> STRef s (DList BS)
lexerSkip :: forall s. Lexer s -> STRef s LexerSkip
lexerReturn :: forall s. Lexer s -> STRef s LexerState
lexerState :: forall s. Lexer s -> STRef s LexerState
lexerLast :: forall s. Lexer s -> STRef s [Word8]
lexerBuffer :: forall s. Lexer s -> STRef s (Buffer s)
lexerToken :: forall s. Lexer s -> STRef s (TokenBuffer s)
lexerOffset :: forall s. Lexer s -> STRef s DOMID
lexerLog :: forall s. Lexer s -> Bool
lexerIgnore :: forall s. Lexer s -> Bool
lexerData :: forall s. Lexer s -> BS
lexerCode :: STRef s DOMID
lexerErrors :: STRef s (DList BS)
lexerSkip :: STRef s LexerSkip
lexerReturn :: STRef s LexerState
lexerState :: STRef s LexerState
lexerLast :: STRef s [Word8]
lexerBuffer :: STRef s (Buffer s)
lexerToken :: STRef s (TokenBuffer s)
lexerOffset :: STRef s DOMID
lexerLog :: Bool
lexerIgnore :: Bool
lexerData :: BS
..} <- forall s a. STRef s a -> ST s a
rref STRef s (Lexer s)
parserLexer
DList BS
e <- forall a. DList a -> DList a -> DList a
D.append forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s a. STRef s a -> ST s a
rref STRef s (DList BS)
lexerErrors forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall s a. STRef s a -> ST s a
rref STRef s (DList BS)
parserErrors
DOM
d <- forall s. Parser s -> ST s DOM
textMapDOM Parser s
p
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ DOM -> [BS] -> ParserResult
ParserResult DOM
d forall a b. (a -> b) -> a -> b
$ forall a. DList a -> [a]
D.toList DList BS
e
Bool
False -> do
Token
t <- forall s a. STRef s a -> ST s a
rref STRef s (Lexer s)
parserLexer forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall s. Lexer s -> ST s Token
lexerNext
forall s. Parser s -> Token -> ST s ()
selfClosingInit Parser s
p Token
t
forall s. Parser s -> Token -> ST s ()
dispatchTreeConstruction Parser s
p Token
t
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (forall s. Parser s -> ST s Bool
selfClosingFlag Parser s
p) forall a b. (a -> b) -> a -> b
$
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) BS
"self closing not acknowledged for token"
forall s. Parser s -> ST s ParserResult
parserRun Parser s
p
dispatchTreeConstruction :: Parser s -> Token -> ST s ()
dispatchTreeConstruction :: forall s. Parser s -> Token -> ST s ()
dispatchTreeConstruction p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t = do
Bool
e <- forall s. Parser s -> ST s Bool
elementStackEmpty Parser s
p
Maybe DOMNode
a <- forall s. Parser s -> ST s (Maybe DOMNode)
adjustedCurrentNode Parser s
p
Bool
b <- forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ case Maybe DOMNode
a of
Just DOMNode
n -> DOMNode -> Bool
domNodeIsHTML DOMNode
n
Bool -> Bool -> Bool
|| DOMNode -> Bool
isMathMLIntegrationPoint DOMNode
n
Bool -> Bool -> Bool
&& Token -> [BS] -> Bool
isTokenStartNotNamed Token
t [BS
"mglyph", BS
"malignmark"]
Bool -> Bool -> Bool
|| DOMNode -> Bool
isMathMLIntegrationPoint DOMNode
n Bool -> Bool -> Bool
&& Token -> Bool
tokenIsChar Token
t
Bool -> Bool -> Bool
|| DOMNode -> BS -> Bool
isMathMLElementNamed DOMNode
n BS
"annotation-xml"
Bool -> Bool -> Bool
&& Token -> [BS] -> Bool
isTokenStartNamed Token
t [BS
"svg"]
Bool -> Bool -> Bool
|| DOMNode -> Bool
isHtmlIntgrationPoint DOMNode
n Bool -> Bool -> Bool
&& Token -> Bool
tokenIsStart Token
t
Bool -> Bool -> Bool
|| DOMNode -> Bool
isHtmlIntgrationPoint DOMNode
n Bool -> Bool -> Bool
&& Token -> Bool
tokenIsChar Token
t
Maybe DOMNode
Nothing -> Bool
False
if Bool
e Bool -> Bool -> Bool
|| Bool
b Bool -> Bool -> Bool
|| Token -> Bool
tokenIsEOF Token
t
then forall s. Parser s -> Token -> ST s ()
doHtmlContent Parser s
p Token
t
else forall s. Parser s -> Token -> ST s ()
doForeignContent Parser s
p Token
t
where
tokenIsChar :: Token -> Bool
tokenIsChar TChar {} = Bool
True
tokenIsChar Token
_ = Bool
False
tokenIsStart :: Token -> Bool
tokenIsStart TStart {} = Bool
True
tokenIsStart Token
_ = Bool
False
tokenIsEOF :: Token -> Bool
tokenIsEOF Token
TEOF = Bool
True
tokenIsEOF Token
_ = Bool
False
doHtmlContent :: Parser s -> Token -> ST s ()
doHtmlContent :: forall s. Parser s -> Token -> ST s ()
doHtmlContent p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t = do
ParserMode
m <- forall s a. STRef s a -> ST s a
rref STRef s ParserMode
parserInsertionMode
forall s. ParserMode -> Parser s -> Token -> ST s ()
parserInserter ParserMode
m Parser s
p Token
t
reprocess :: Parser s -> Token -> ST s ()
reprocess :: forall s. Parser s -> Token -> ST s ()
reprocess = forall s. Parser s -> Token -> ST s ()
doHtmlContent
parserInserter :: ParserMode -> Parser s -> Token -> ST s ()
parserInserter :: forall s. ParserMode -> Parser s -> Token -> ST s ()
parserInserter = \case
ParserMode
ModeInitial -> forall s. Parser s -> Token -> ST s ()
doModeInitial
ParserMode
ModeBeforeHtml -> forall s. Parser s -> Token -> ST s ()
doModeBeforeHtml
ParserMode
ModeBeforeHead -> forall s. Parser s -> Token -> ST s ()
doModeBeforeHead
ParserMode
ModeInHead -> forall s. Parser s -> Token -> ST s ()
doModeInHead
ParserMode
ModeInHeadNoscript -> forall s. Parser s -> Token -> ST s ()
doModeInHeadNoscript
ParserMode
ModeAfterHead -> forall s. Parser s -> Token -> ST s ()
doModeAfterHead
ParserMode
ModeInBody -> forall s. Parser s -> Token -> ST s ()
doModeInBody
ParserMode
ModeText -> forall s. Parser s -> Token -> ST s ()
doModeText
ParserMode
ModeInTable -> forall s. Parser s -> Token -> ST s ()
doModeInTable
ParserMode
ModeInTableText -> forall s. Parser s -> Token -> ST s ()
doModeInTableText
ParserMode
ModeInCaption -> forall s. Parser s -> Token -> ST s ()
doModeInCaption
ParserMode
ModeInColumnGroup -> forall s. Parser s -> Token -> ST s ()
doModeInColumnGroup
ParserMode
ModeInTableBody -> forall s. Parser s -> Token -> ST s ()
doModeInTableBody
ParserMode
ModeInRow -> forall s. Parser s -> Token -> ST s ()
doModeInRow
ParserMode
ModeInCell -> forall s. Parser s -> Token -> ST s ()
doModeInCell
ParserMode
ModeInSelect -> forall s. Parser s -> Token -> ST s ()
doModeInSelect
ParserMode
ModeInSelectInTable -> forall s. Parser s -> Token -> ST s ()
doModeInSelectInTable
ParserMode
ModeInTemplate -> forall s. Parser s -> Token -> ST s ()
doModeInTemplate
ParserMode
ModeAfterBody -> forall s. Parser s -> Token -> ST s ()
doModeAfterBody
ParserMode
ModeInFrameset -> forall s. Parser s -> Token -> ST s ()
doModeInFrameset
ParserMode
ModeAfterFrameset -> forall s. Parser s -> Token -> ST s ()
doModeAfterFrameset
ParserMode
ModeAfterAfterBody -> forall s. Parser s -> Token -> ST s ()
doModeAfterAfterBody
ParserMode
ModeAfterAfterFrameset -> forall s. Parser s -> Token -> ST s ()
doModeAfterAfterFrameset
parseError :: Parser s -> Maybe Token -> BS -> ST s ()
parseError :: forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Maybe Token
t BS
s =
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when Bool
parserLogErrors forall a b. (a -> b) -> a -> b
$
forall s a. STRef s a -> (a -> a) -> ST s ()
uref STRef s (DList BS)
parserErrors forall a b. (a -> b) -> a -> b
$ forall a b c. (a -> b -> c) -> b -> a -> c
flip forall a. DList a -> a -> DList a
D.snoc BS
e
where
e :: BS
e = BS
s forall a. Semigroup a => a -> a -> a
<> case Maybe Token
t of
Just (TDoctype {Bool
Maybe BS
BS
tDoctypeSystem :: Token -> Maybe BS
tDoctypePublic :: Token -> Maybe BS
tDoctypeQuirks :: Token -> Bool
tDoctypeName :: Token -> BS
tDoctypeSystem :: Maybe BS
tDoctypePublic :: Maybe BS
tDoctypeQuirks :: Bool
tDoctypeName :: BS
..}) -> BS
",doctype"
Just (TStart {Bool
[TAttr]
BS
tStartAttr :: Token -> [TAttr]
tStartClosed :: Token -> Bool
tStartName :: Token -> BS
tStartAttr :: [TAttr]
tStartClosed :: Bool
tStartName :: BS
..}) -> BS
",tag-start," forall a. Semigroup a => a -> a -> a
<> BS
tStartName
Just (TEnd {BS
tEndName :: Token -> BS
tEndName :: BS
..}) -> BS
",tag-end," forall a. Semigroup a => a -> a -> a
<> BS
tEndName
Just (TComment {BS
tCommentData :: Token -> BS
tCommentData :: BS
..}) -> BS
",comment"
Just (TChar {Word8
tCharData :: Token -> Word8
tCharData :: Word8
..}) -> BS
",chr," forall a. Semigroup a => a -> a -> a
<> Word8 -> BS
bsOnly Word8
tCharData
Just Token
TEOF -> BS
",eof"
Maybe Token
Nothing -> BS
bsEmpty
isTokenStartNamed :: Token -> [BS] -> Bool
isTokenStartNamed :: Token -> [BS] -> Bool
isTokenStartNamed TStart {Bool
[TAttr]
BS
tStartAttr :: [TAttr]
tStartClosed :: Bool
tStartName :: BS
tStartAttr :: Token -> [TAttr]
tStartClosed :: Token -> Bool
tStartName :: Token -> BS
..} [BS]
names = BS
tStartName forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` [BS]
names
isTokenStartNamed Token
_ [BS]
_ = Bool
False
isTokenStartNotNamed :: Token -> [BS] -> Bool
isTokenStartNotNamed :: Token -> [BS] -> Bool
isTokenStartNotNamed TStart {Bool
[TAttr]
BS
tStartAttr :: [TAttr]
tStartClosed :: Bool
tStartName :: BS
tStartAttr :: Token -> [TAttr]
tStartClosed :: Token -> Bool
tStartName :: Token -> BS
..} [BS]
names = Bool -> Bool
not forall a b. (a -> b) -> a -> b
$ BS
tStartName forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` [BS]
names
isTokenStartNotNamed Token
_ [BS]
_ = Bool
False
isTokenEndNamed :: Token -> [BS] -> Bool
isTokenEndNamed :: Token -> [BS] -> Bool
isTokenEndNamed TEnd {BS
tEndName :: BS
tEndName :: Token -> BS
..} [BS]
names = BS
tEndName forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` [BS]
names
isTokenEndNamed Token
_ [BS]
_ = Bool
False
isTokenEndNotNamed :: Token -> [BS] -> Bool
isTokenEndNotNamed :: Token -> [BS] -> Bool
isTokenEndNotNamed TEnd {BS
tEndName :: BS
tEndName :: Token -> BS
..} [BS]
names = Bool -> Bool
not forall a b. (a -> b) -> a -> b
$ BS
tEndName forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` [BS]
names
isTokenEndNotNamed Token
_ [BS]
_ = Bool
False
elementName :: BS -> DOMNode -> Bool
elementName :: BS -> DOMNode -> Bool
elementName BS
x DOMNode
y = DOMNode -> BS
domNodeElementName DOMNode
y forall a. Eq a => a -> a -> Bool
== BS
x
elementNameNot :: BS -> DOMNode -> Bool
elementNameNot :: BS -> DOMNode -> Bool
elementNameNot BS
x = Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. BS -> DOMNode -> Bool
elementName BS
x
elementNameIn :: [BS] -> DOMNode -> Bool
elementNameIn :: [BS] -> DOMNode -> Bool
elementNameIn [BS]
x DOMNode
y = DOMNode -> BS
domNodeElementName DOMNode
y forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` [BS]
x
elementNameNotIn :: [BS] -> DOMNode -> Bool
elementNameNotIn :: [BS] -> DOMNode -> Bool
elementNameNotIn [BS]
x = Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. [BS] -> DOMNode -> Bool
elementNameIn [BS]
x
elementStack :: Parser s -> ST s [DOMID]
elementStack :: forall s. Parser s -> ST s [DOMID]
elementStack Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> ST s a
readSTRef STRef s [DOMID]
parserElementStack
elementStackEmpty :: Parser s -> ST s Bool
elementStackEmpty :: forall s. Parser s -> ST s Bool
elementStackEmpty p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall (t :: * -> *) a. Foldable t => t a -> Bool
null forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s [DOMID]
elementStack Parser s
p
elementStackSize :: Parser s -> ST s Int
elementStackSize :: forall s. Parser s -> ST s DOMID
elementStackSize p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall (t :: * -> *) a. Foldable t => t a -> DOMID
length forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s [DOMID]
elementStack Parser s
p
elementStackModify :: Parser s -> ([DOMID] -> [DOMID]) -> ST s ()
elementStackModify :: forall s. Parser s -> ([DOMID] -> [DOMID]) -> ST s ()
elementStackModify p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} [DOMID] -> [DOMID]
f = forall s a. STRef s a -> (a -> a) -> ST s ()
uref STRef s [DOMID]
parserElementStack [DOMID] -> [DOMID]
f
elementStackPush :: Parser s -> DOMID -> ST s ()
elementStackPush :: forall s. Parser s -> DOMID -> ST s ()
elementStackPush p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} DOMID
x = forall s. Parser s -> ([DOMID] -> [DOMID]) -> ST s ()
elementStackModify Parser s
p forall a b. (a -> b) -> a -> b
$ (DOMID
xforall a. a -> [a] -> [a]
:)
elementStackPop :: Parser s -> ST s ()
elementStackPop :: forall s. Parser s -> ST s ()
elementStackPop p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s. Parser s -> ([DOMID] -> [DOMID]) -> ST s ()
elementStackModify Parser s
p forall a b. (a -> b) -> a -> b
$ forall a. DOMID -> [a] -> [a]
drop DOMID
1
elementStackPopWhile :: Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopWhile :: forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopWhile p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} DOMNode -> Bool
f =
forall s. Parser s -> ST s (Maybe DOMNode)
currentNode Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Just DOMNode
a | DOMNode -> Bool
f DOMNode
a -> forall s. Parser s -> ST s ()
elementStackPop Parser s
p forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopWhile Parser s
p DOMNode -> Bool
f
Maybe DOMNode
_ -> forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
elementStackPopIf :: Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopIf :: forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopIf p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} DOMNode -> Bool
f =
forall s. Parser s -> ST s (Maybe DOMNode)
currentNode Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Just DOMNode
a | DOMNode -> Bool
f DOMNode
a -> forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Maybe DOMNode
_ -> forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
elementStackPopUntil :: Parser s -> (DOMType -> Bool) -> ST s ()
elementStackPopUntil :: forall s. Parser s -> (DOMType -> Bool) -> ST s ()
elementStackPopUntil p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} DOMType -> Bool
f = do
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopWhile Parser s
p (Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOMNode -> Bool
g)
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopIf Parser s
p DOMNode -> Bool
g
where
g :: DOMNode -> Bool
g = DOMType -> Bool
f forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOMNode -> DOMType
domNodeType
elementStackPopUntilID :: Parser s -> DOMID -> ST s ()
elementStackPopUntilID :: forall s. Parser s -> DOMID -> ST s ()
elementStackPopUntilID Parser s
p DOMID
x = forall s. Parser s -> ([DOMID] -> [DOMID]) -> ST s ()
elementStackModify Parser s
p forall a b. (a -> b) -> a -> b
$ forall a. DOMID -> [a] -> [a]
drop DOMID
1 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. (a -> Bool) -> [a] -> [a]
dropWhile (forall a. Eq a => a -> a -> Bool
/=DOMID
x)
elementStackPopUntilType :: Parser s -> DOMType -> ST s ()
elementStackPopUntilType :: forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
x = forall s. Parser s -> (DOMType -> Bool) -> ST s ()
elementStackPopUntil Parser s
p (forall a. Eq a => a -> a -> Bool
==DOMType
x)
elementStackPopUntilTypeIn :: Parser s -> [DOMType] -> ST s ()
elementStackPopUntilTypeIn :: forall s. Parser s -> [DOMType] -> ST s ()
elementStackPopUntilTypeIn Parser s
p [DOMType]
x = forall s. Parser s -> (DOMType -> Bool) -> ST s ()
elementStackPopUntil Parser s
p forall a b. (a -> b) -> a -> b
$ forall a b c. (a -> b -> c) -> b -> a -> c
flip forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem [DOMType]
x
elementStackNodes :: Parser s -> ST s [DOMNode]
elementStackNodes :: forall s. Parser s -> ST s [DOMNode]
elementStackNodes Parser s
p = DOM -> [DOMID] -> [DOMNode]
domMapID forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s DOM
getDOM Parser s
p forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall s. Parser s -> ST s [DOMID]
elementStack Parser s
p
elementStackTypes :: Parser s -> ST s [DOMType]
elementStackTypes :: forall s. Parser s -> ST s [DOMType]
elementStackTypes Parser s
p = forall a b. (a -> b) -> [a] -> [b]
map DOMNode -> DOMType
domNodeType forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s [DOMNode]
elementStackNodes Parser s
p
elementStackAny :: Parser s -> (DOMNode -> Bool) -> ST s Bool
elementStackAny :: forall s. Parser s -> (DOMNode -> Bool) -> ST s Bool
elementStackAny Parser s
p DOMNode -> Bool
f = forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any DOMNode -> Bool
f forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s [DOMNode]
elementStackNodes Parser s
p
elementStackAll :: Parser s -> (DOMNode -> Bool) -> ST s Bool
elementStackAll :: forall s. Parser s -> (DOMNode -> Bool) -> ST s Bool
elementStackAll Parser s
p DOMNode -> Bool
f = forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
all DOMNode -> Bool
f forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s [DOMNode]
elementStackNodes Parser s
p
elementStackHasBody :: Parser s -> ST s Bool
elementStackHasBody :: forall s. Parser s -> ST s Bool
elementStackHasBody Parser s
p =
forall (f :: * -> *) a b. Applicative f => (a -> b) -> f a -> f b
liftA forall a. [a] -> [a]
reverse (forall s. Parser s -> ST s [DOMType]
elementStackTypes Parser s
p) forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall (f :: * -> *) a. Applicative f => a -> f a
pure forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
(DOMType
_:DOMType
x:[DOMType]
_) -> DOMType
x forall a. Eq a => a -> a -> Bool
== BS -> DOMType
domMakeTypeHTML BS
"body"
[DOMType]
_otherwise -> Bool
False
elementStackHasTemplate :: Parser s -> ST s Bool
elementStackHasTemplate :: forall s. Parser s -> ST s Bool
elementStackHasTemplate Parser s
p = forall s. Parser s -> (DOMNode -> Bool) -> ST s Bool
elementStackAny Parser s
p DOMNode -> Bool
domNodeIsTemplate
elementStackMissingTemplate :: Parser s -> ST s Bool
elementStackMissingTemplate :: forall s. Parser s -> ST s Bool
elementStackMissingTemplate Parser s
p = forall s. Parser s -> (DOMNode -> Bool) -> ST s Bool
elementStackAll Parser s
p forall a b. (a -> b) -> a -> b
$ Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOMNode -> Bool
domNodeIsTemplate
elementStackRemove :: Parser s -> DOMID -> ST s ()
elementStackRemove :: forall s. Parser s -> DOMID -> ST s ()
elementStackRemove Parser s
p DOMID
x = forall s. Parser s -> ([DOMID] -> [DOMID]) -> ST s ()
elementStackModify Parser s
p forall a b. (a -> b) -> a -> b
$ forall a. (a -> Bool) -> [a] -> [a]
filter (forall a. Eq a => a -> a -> Bool
/=DOMID
x)
elementStackReplace :: Parser s -> DOMID -> DOMID -> ST s ()
elementStackReplace :: forall s. Parser s -> DOMID -> DOMID -> ST s ()
elementStackReplace Parser s
p DOMID
x DOMID
y =
forall s. Parser s -> ([DOMID] -> [DOMID]) -> ST s ()
elementStackModify Parser s
p forall a b. (a -> b) -> a -> b
$ forall a b. (a -> b) -> [a] -> [b]
map (\DOMID
i -> if DOMID
i forall a. Eq a => a -> a -> Bool
== DOMID
x then DOMID
y else DOMID
i)
elementStackSucc :: Parser s -> DOMID -> ST s (Maybe DOMID)
elementStackSucc :: forall s. Parser s -> DOMID -> ST s (Maybe DOMID)
elementStackSucc Parser s
p DOMID
x = forall a. (a -> Bool) -> [a] -> Maybe a
findSucc (forall a. Eq a => a -> a -> Bool
==DOMID
x) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s [DOMID]
elementStack Parser s
p
elementStackInsertBefore :: Parser s -> DOMID -> DOMID -> ST s ()
elementStackInsertBefore :: forall s. Parser s -> DOMID -> DOMID -> ST s ()
elementStackInsertBefore Parser s
p DOMID
x DOMID
y = forall s. Parser s -> ([DOMID] -> [DOMID]) -> ST s ()
elementStackModify Parser s
p forall a b. (a -> b) -> a -> b
$ forall a. (a -> Bool) -> a -> [a] -> [a]
insertBefore (forall a. Eq a => a -> a -> Bool
==DOMID
x) DOMID
y
elementStackDetails :: Parser s -> ST s [ElementDetails]
elementStackDetails :: forall s. Parser s -> ST s [ElementDetails]
elementStackDetails Parser s
p = DOM -> [DOMID] -> [ElementDetails]
g forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s DOM
getDOM Parser s
p forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall s. Parser s -> ST s [DOMID]
elementStack Parser s
p
where
g :: DOM -> [DOMID] -> [ElementDetails]
g DOM
d [DOMID]
x = forall a b. (a -> Maybe b) -> [a] -> [b]
mapMaybe (DOM -> (DOMID, DOMID) -> Maybe ElementDetails
f DOM
d) forall a b. (a -> b) -> a -> b
$ forall a b. [a] -> [b] -> [(a, b)]
zip [DOMID
1..] [DOMID]
x
f :: DOM -> (DOMID, DOMID) -> Maybe ElementDetails
f DOM
d (DOMID
i, DOMID
x) =
case DOM -> DOMID -> Maybe DOMNode
domGetNode DOM
d DOMID
x of
Maybe DOMNode
Nothing -> forall a. Maybe a
Nothing
Just DOMNode
a -> forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ DOMID -> DOMID -> DOMNode -> DOMType -> ElementDetails
ElementDetails DOMID
i DOMID
x DOMNode
a forall a b. (a -> b) -> a -> b
$ DOMNode -> DOMType
domNodeType DOMNode
a
elementStackFind :: Parser s -> (ElementDetails -> Bool) -> ST s (Maybe ElementDetails)
elementStackFind :: forall s.
Parser s -> (ElementDetails -> Bool) -> ST s (Maybe ElementDetails)
elementStackFind Parser s
p ElementDetails -> Bool
f = forall (f :: * -> *) a b. Applicative f => (a -> b) -> f a -> f b
liftA (forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a
find ElementDetails -> Bool
f) forall a b. (a -> b) -> a -> b
$ forall s. Parser s -> ST s [ElementDetails]
elementStackDetails Parser s
p
elementTypesSpecial :: Set DOMType
elementTypesSpecial :: Set DOMType
elementTypesSpecial = forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a
Set.unions
[ forall a. Ord a => [a] -> Set a
Set.fromList forall a b. (a -> b) -> a -> b
$ [BS] -> [DOMType]
domTypesHTML
[ BS
"address", BS
"applet", BS
"area", BS
"article", BS
"aside",
BS
"base", BS
"basefont", BS
"bgsound", BS
"blockquote", BS
"body",
BS
"br", BS
"button", BS
"caption", BS
"center", BS
"col", BS
"colgroup",
BS
"dd", BS
"details", BS
"dir", BS
"div", BS
"dl", BS
"dt", BS
"embed",
BS
"fieldset", BS
"figcaption", BS
"figure", BS
"footer", BS
"form",
BS
"frame", BS
"frameset", BS
"h1", BS
"h2", BS
"h3", BS
"h4", BS
"h5", BS
"h6",
BS
"head", BS
"header", BS
"hgroup", BS
"hr", BS
"html", BS
"iframe",
BS
"img", BS
"input", BS
"isindex", BS
"li", BS
"link", BS
"listing",
BS
"main", BS
"marquee", BS
"menu", BS
"menuitem", BS
"meta", BS
"nav",
BS
"noembed", BS
"noframes", BS
"noscript", BS
"object", BS
"ol",
BS
"p", BS
"param", BS
"plaintext", BS
"pre", BS
"script", BS
"section",
BS
"select", BS
"source", BS
"style", BS
"summary", BS
"table",
BS
"tbody", BS
"td", BS
"template", BS
"textarea", BS
"tfoot",
BS
"th", BS
"thead", BS
"title", BS
"tr", BS
"track", BS
"ul", BS
"wbr" ]
, forall a. Ord a => [a] -> Set a
Set.fromList forall a b. (a -> b) -> a -> b
$ [BS] -> [DOMType]
domTypesMathML
[ BS
"mi", BS
"mo", BS
"mn", BS
"ms", BS
"mtext", BS
"annotation-xml" ]
, forall a. Ord a => [a] -> Set a
Set.fromList forall a b. (a -> b) -> a -> b
$ [BS] -> [DOMType]
domTypesSVG
[ BS
"foreignObject", BS
"desc", BS
"title" ]
]
elementTypesFormatting :: Set DOMType
elementTypesFormatting :: Set DOMType
elementTypesFormatting =
forall a. Ord a => [a] -> Set a
Set.fromList forall a b. (a -> b) -> a -> b
$ [BS] -> [DOMType]
domTypesHTML
[ BS
"a", BS
"b", BS
"big", BS
"code", BS
"em", BS
"font", BS
"i", BS
"nobr",
BS
"s", BS
"small", BS
"strike", BS
"strong", BS
"tt", BS
"u"]
elementCategory :: DOMType -> ParserElementCategory
elementCategory :: DOMType -> ParserElementCategory
elementCategory DOMType
x
| forall a. Ord a => a -> Set a -> Bool
Set.member DOMType
x Set DOMType
elementTypesSpecial = ParserElementCategory
ElementCategorySpecial
| forall a. Ord a => a -> Set a -> Bool
Set.member DOMType
x Set DOMType
elementTypesFormatting = ParserElementCategory
ElementCategoryFormatting
| Bool
otherwise = ParserElementCategory
ElementCategoryOrdinary
elementIsSpecial :: DOMType -> Bool
elementIsSpecial :: DOMType -> Bool
elementIsSpecial DOMType
x = DOMType -> ParserElementCategory
elementCategory DOMType
x forall a. Eq a => a -> a -> Bool
== ParserElementCategory
ElementCategorySpecial
elementInSpecificScope :: Parser s -> Bool -> Set DOMType -> DOMType -> ST s Bool
elementInSpecificScope :: forall s. Parser s -> Bool -> Set DOMType -> DOMType -> ST s Bool
elementInSpecificScope Parser s
p Bool
include Set DOMType
types DOMType
target =
[DOMType] -> Bool
f forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s [DOMType]
elementStackTypes Parser s
p
where
f :: [DOMType] -> Bool
f :: [DOMType] -> Bool
f [] = Bool
False
f (DOMType
x:[DOMType]
xs)
| DOMType
x forall a. Eq a => a -> a -> Bool
== DOMType
target = Bool
True
| Bool
include forall a. Eq a => a -> a -> Bool
== Bool
True Bool -> Bool -> Bool
&& forall a. Ord a => a -> Set a -> Bool
Set.member DOMType
x Set DOMType
types forall a. Eq a => a -> a -> Bool
== Bool
True = Bool
False
| Bool
include forall a. Eq a => a -> a -> Bool
== Bool
False Bool -> Bool -> Bool
&& forall a. Ord a => a -> Set a -> Bool
Set.member DOMType
x Set DOMType
types forall a. Eq a => a -> a -> Bool
== Bool
False = Bool
False
| Bool
otherwise = [DOMType] -> Bool
f [DOMType]
xs
elementScopes :: Set DOMType
elementScopes :: Set DOMType
elementScopes = forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a
Set.unions
[ forall a. Ord a => [a] -> Set a
Set.fromList forall a b. (a -> b) -> a -> b
$ [BS] -> [DOMType]
domTypesHTML
[ BS
"applet", BS
"caption", BS
"html", BS
"table", BS
"td", BS
"th"
, BS
"marquee", BS
"object", BS
"template" ]
, forall a. Ord a => [a] -> Set a
Set.fromList forall a b. (a -> b) -> a -> b
$ [BS] -> [DOMType]
domTypesMathML
[ BS
"mi", BS
"mo", BS
"mn", BS
"ms", BS
"mtext", BS
"annotation-xml" ]
, forall a. Ord a => [a] -> Set a
Set.fromList forall a b. (a -> b) -> a -> b
$ [BS] -> [DOMType]
domTypesSVG
[ BS
"foreignObject", BS
"desc", BS
"title" ]
]
elementInScope :: Parser s -> DOMType -> ST s Bool
elementInScope :: forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p = forall s. Parser s -> Bool -> Set DOMType -> DOMType -> ST s Bool
elementInSpecificScope Parser s
p Bool
True Set DOMType
elementScopes
elementInListScope :: Parser s -> DOMType -> ST s Bool
elementInListScope :: forall s. Parser s -> DOMType -> ST s Bool
elementInListScope Parser s
p =
forall s. Parser s -> Bool -> Set DOMType -> DOMType -> ST s Bool
elementInSpecificScope Parser s
p Bool
True forall a b. (a -> b) -> a -> b
$
forall a. Ord a => Set a -> Set a -> Set a
Set.union Set DOMType
elementScopes forall a b. (a -> b) -> a -> b
$ forall a. Ord a => [a] -> Set a
Set.fromList forall a b. (a -> b) -> a -> b
$
[BS] -> [DOMType]
domTypesHTML [ BS
"ol", BS
"ul" ]
elementInButtonScope :: Parser s -> DOMType -> ST s Bool
elementInButtonScope :: forall s. Parser s -> DOMType -> ST s Bool
elementInButtonScope Parser s
p =
forall s. Parser s -> Bool -> Set DOMType -> DOMType -> ST s Bool
elementInSpecificScope Parser s
p Bool
True forall a b. (a -> b) -> a -> b
$
forall a. Ord a => Set a -> Set a -> Set a
Set.union Set DOMType
elementScopes forall a b. (a -> b) -> a -> b
$ forall a. Ord a => [a] -> Set a
Set.fromList [ BS -> DOMType
domMakeTypeHTML BS
"button" ]
elementInTableScope :: Parser s -> DOMType -> ST s Bool
elementInTableScope :: forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p =
forall s. Parser s -> Bool -> Set DOMType -> DOMType -> ST s Bool
elementInSpecificScope Parser s
p Bool
True forall a b. (a -> b) -> a -> b
$
forall a. Ord a => [a] -> Set a
Set.fromList forall a b. (a -> b) -> a -> b
$ [BS] -> [DOMType]
domTypesHTML [ BS
"html", BS
"table", BS
"template" ]
elementInSelectScope :: Parser s -> DOMType -> ST s Bool
elementInSelectScope :: forall s. Parser s -> DOMType -> ST s Bool
elementInSelectScope Parser s
p =
forall s. Parser s -> Bool -> Set DOMType -> DOMType -> ST s Bool
elementInSpecificScope Parser s
p Bool
False forall a b. (a -> b) -> a -> b
$
forall a. Ord a => [a] -> Set a
Set.fromList forall a b. (a -> b) -> a -> b
$ [BS] -> [DOMType]
domTypesHTML [ BS
"optgroup", BS
"option" ]
newID :: Parser s -> DOMNode -> ST s DOMID
newID :: forall s. Parser s -> DOMNode -> ST s DOMID
newID Parser s
p DOMNode
x = do
(DOM
d, DOMID
i) <- forall a b c. (a -> b -> c) -> b -> a -> c
flip DOM -> DOMNode -> (DOM, DOMID)
domNewID DOMNode
x forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s DOM
getDOM Parser s
p
forall s. Parser s -> DOM -> ST s ()
setDOM Parser s
p DOM
d
forall (f :: * -> *) a. Applicative f => a -> f a
pure DOMID
i
getNode :: Parser s -> DOMID -> ST s (Maybe DOMNode)
getNode :: forall s. Parser s -> DOMID -> ST s (Maybe DOMNode)
getNode p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} DOMID
x = forall a b c. (a -> b -> c) -> b -> a -> c
flip DOM -> DOMID -> Maybe DOMNode
domGetNode DOMID
x forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s DOM
getDOM Parser s
p
nodeElementName :: Parser s -> DOMID -> ST s BS
nodeElementName :: forall s. Parser s -> DOMID -> ST s BS
nodeElementName p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} DOMID
x = do
DOM
d <- forall s. Parser s -> ST s DOM
getDOM Parser s
p
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ case DOM -> DOMID -> Maybe DOMNode
domGetNode DOM
d DOMID
x of
Just DOMNode
a -> DOMNode -> BS
domNodeElementName DOMNode
a
Maybe DOMNode
Nothing -> BS
bsEmpty
lastNodeID :: Parser s -> ST s (Maybe DOMID)
lastNodeID :: forall s. Parser s -> ST s (Maybe DOMID)
lastNodeID p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall a. [a] -> Maybe a
listToMaybe forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. [a] -> [a]
reverse forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s [DOMID]
elementStack Parser s
p
currentNodeID :: Parser s -> ST s (Maybe DOMID)
currentNodeID :: forall s. Parser s -> ST s (Maybe DOMID)
currentNodeID p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall a. [a] -> Maybe a
listToMaybe forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s [DOMID]
elementStack Parser s
p
currentNode :: Parser s -> ST s (Maybe DOMNode)
currentNode :: forall s. Parser s -> ST s (Maybe DOMNode)
currentNode Parser s
p = forall s. Parser s -> ST s (Maybe DOMID)
currentNodeID Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall b a. b -> (a -> b) -> Maybe a -> b
maybe (forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a. Maybe a
Nothing) (forall s. Parser s -> DOMID -> ST s (Maybe DOMNode)
getNode Parser s
p)
currentNodeHasType :: Parser s -> DOMType -> ST s Bool
currentNodeHasType :: forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
x =
forall s. Parser s -> ST s (Maybe DOMNode)
currentNode Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall (f :: * -> *) a. Applicative f => a -> f a
pure forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
Just DOMNode
a -> DOMNode -> DOMType
domNodeType DOMNode
a forall a. Eq a => a -> a -> Bool
== DOMType
x
Maybe DOMNode
Nothing -> Bool
False
currentNodeHasHTMLType :: Parser s -> BS -> ST s Bool
currentNodeHasHTMLType :: forall s. Parser s -> BS -> ST s Bool
currentNodeHasHTMLType Parser s
p = forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p forall b c a. (b -> c) -> (a -> b) -> a -> c
. BS -> DOMType
domMakeTypeHTML
currentNodeHasTypeIn :: Parser s -> [DOMType] -> ST s Bool
currentNodeHasTypeIn :: forall s. Parser s -> [DOMType] -> ST s Bool
currentNodeHasTypeIn Parser s
p [DOMType]
x =
forall s. Parser s -> ST s (Maybe DOMNode)
currentNode Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall (f :: * -> *) a. Applicative f => a -> f a
pure forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
Just DOMNode
a -> DOMNode -> DOMType
domNodeType DOMNode
a forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` [DOMType]
x
Maybe DOMNode
Nothing -> Bool
False
currentNodeHasHTMLTypeIn :: Parser s -> [BS] -> ST s Bool
currentNodeHasHTMLTypeIn :: forall s. Parser s -> [BS] -> ST s Bool
currentNodeHasHTMLTypeIn Parser s
p = forall s. Parser s -> [DOMType] -> ST s Bool
currentNodeHasTypeIn Parser s
p forall b c a. (b -> c) -> (a -> b) -> a -> c
. [BS] -> [DOMType]
domTypesHTML
adjustedCurrentNodeID :: Parser s -> ST s (Maybe DOMID)
adjustedCurrentNodeID :: forall s. Parser s -> ST s (Maybe DOMID)
adjustedCurrentNodeID p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = do
Bool
f <- forall s a. STRef s a -> ST s a
rref STRef s Bool
parserFragmentMode
DOMID
n <- forall s. Parser s -> ST s DOMID
elementStackSize Parser s
p
if Bool
f Bool -> Bool -> Bool
&& DOMID
n forall a. Eq a => a -> a -> Bool
== DOMID
1
then forall s a. STRef s a -> ST s a
rref STRef s (Maybe DOMID)
parserContextElement
else forall s. Parser s -> ST s (Maybe DOMID)
currentNodeID Parser s
p
adjustedCurrentNode :: Parser s -> ST s (Maybe DOMNode)
adjustedCurrentNode :: forall s. Parser s -> ST s (Maybe DOMNode)
adjustedCurrentNode Parser s
p =
forall s. Parser s -> ST s (Maybe DOMID)
adjustedCurrentNodeID Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall b a. b -> (a -> b) -> Maybe a -> b
maybe (forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a. Maybe a
Nothing) (forall s. Parser s -> DOMID -> ST s (Maybe DOMNode)
getNode Parser s
p)
isMathMLElementNamed :: DOMNode -> BS -> Bool
isMathMLElementNamed :: DOMNode -> BS -> Bool
isMathMLElementNamed DOMNode
x BS
n = DOMNode -> Bool
domNodeIsMathML DOMNode
x Bool -> Bool -> Bool
&& DOMNode -> BS
domElementName DOMNode
x forall a. Eq a => a -> a -> Bool
== BS
n
isMathMLIntegrationPoint :: DOMNode -> Bool
isMathMLIntegrationPoint :: DOMNode -> Bool
isMathMLIntegrationPoint DOMNode
x
| DOMNode -> Bool
domNodeIsElement DOMNode
x =
DOMNode -> Bool
domNodeIsMathML DOMNode
x Bool -> Bool -> Bool
&& forall a. Ord a => a -> Set a -> Bool
Set.member (DOMNode -> BS
domElementName DOMNode
x) Set BS
s
| Bool
otherwise =
Bool
False
where
s :: Set BS
s = forall a. Ord a => [a] -> Set a
Set.fromList [ BS
"mi", BS
"mo", BS
"mn", BS
"ms", BS
"mtext" ]
isHtmlIntgrationPoint :: DOMNode -> Bool
isHtmlIntgrationPoint :: DOMNode -> Bool
isHtmlIntgrationPoint DOMNode
x
| DOMNode -> Bool
domNodeIsElement DOMNode
x = Bool
s Bool -> Bool -> Bool
|| Bool
m
| Bool
otherwise = Bool
False
where
s :: Bool
s = DOMNode -> Bool
domNodeIsSVG DOMNode
x
Bool -> Bool -> Bool
&& forall a. Ord a => a -> Set a -> Bool
Set.member (DOMNode -> BS
domElementName DOMNode
x) Set BS
s0
m :: Bool
m = DOMNode -> Bool
domNodeIsMathML DOMNode
x
Bool -> Bool -> Bool
&& DOMNode -> BS
domElementName DOMNode
x forall a. Eq a => a -> a -> Bool
== BS
"annotation-xml"
Bool -> Bool -> Bool
&& case DOMNode -> BS -> Maybe DOMAttr
domElementFindAttr DOMNode
x BS
"encoding" of
Just (DOMAttr BS
n BS
v HTMLAttrNamespace
s) ->
forall a. Ord a => a -> Set a -> Bool
Set.member (BS -> BS
bsLower BS
v) Set BS
s1
Maybe DOMAttr
_otherwise -> Bool
False
s0 :: Set BS
s0 = forall a. Ord a => [a] -> Set a
Set.fromList [ BS
"foreignObject", BS
"desc", BS
"title" ]
s1 :: Set BS
s1 = forall a. Ord a => [a] -> Set a
Set.fromList [ BS
"text/html", BS
"application/xhtml+xml" ]
getDOM :: Parser s -> ST s DOM
getDOM :: forall s. Parser s -> ST s DOM
getDOM Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> ST s a
rref STRef s DOM
parserDOM
setDOM :: Parser s -> DOM -> ST s ()
setDOM :: forall s. Parser s -> DOM -> ST s ()
setDOM Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> a -> ST s ()
wref STRef s DOM
parserDOM
modifyDOM :: Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM :: forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> (a -> a) -> ST s ()
uref STRef s DOM
parserDOM
setMode :: Parser s -> ParserMode -> ST s ()
setMode :: forall s. Parser s -> ParserMode -> ST s ()
setMode Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> a -> ST s ()
wref STRef s ParserMode
parserInsertionMode
saveMode :: Parser s -> ST s ()
saveMode :: forall s. Parser s -> ST s ()
saveMode Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> ST s a
rref STRef s ParserMode
parserInsertionMode forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall s a. STRef s a -> a -> ST s ()
wref STRef s ParserMode
parserOriginalMode
restoreMode :: Parser s -> ST s ()
restoreMode :: forall s. Parser s -> ST s ()
restoreMode Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = do
forall s a. STRef s a -> ST s a
rref STRef s ParserMode
parserOriginalMode forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall s a. STRef s a -> a -> ST s ()
wref STRef s ParserMode
parserInsertionMode
forall s a. STRef s a -> a -> ST s ()
wref STRef s ParserMode
parserOriginalMode ParserMode
ModeInitial
setHeadID :: Parser s -> Maybe DOMID -> ST s ()
setHeadID :: forall s. Parser s -> Maybe DOMID -> ST s ()
setHeadID Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> a -> ST s ()
wref STRef s (Maybe DOMID)
parserHeadElement
getHeadID :: Parser s -> ST s (Maybe DOMID)
getHeadID :: forall s. Parser s -> ST s (Maybe DOMID)
getHeadID Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> ST s a
rref STRef s (Maybe DOMID)
parserHeadElement
getHeadElement :: Parser s -> ST s (Maybe DOMNode)
getHeadElement :: forall s. Parser s -> ST s (Maybe DOMNode)
getHeadElement Parser s
p = forall s. Parser s -> ST s (Maybe DOMID)
getHeadID Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall b a. b -> (a -> b) -> Maybe a -> b
maybe (forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a. Maybe a
Nothing) (forall s. Parser s -> DOMID -> ST s (Maybe DOMNode)
getNode Parser s
p)
saveHead :: Parser s -> ST s ()
saveHead :: forall s. Parser s -> ST s ()
saveHead Parser s
p = forall s. Parser s -> ST s (Maybe DOMID)
currentNodeID Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall s. Parser s -> Maybe DOMID -> ST s ()
setHeadID Parser s
p
setFormID :: Parser s -> Maybe DOMID -> ST s ()
setFormID :: forall s. Parser s -> Maybe DOMID -> ST s ()
setFormID Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> a -> ST s ()
wref STRef s (Maybe DOMID)
parserFormElement
getFormID :: Parser s -> ST s (Maybe DOMID)
getFormID :: forall s. Parser s -> ST s (Maybe DOMID)
getFormID Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> ST s a
rref STRef s (Maybe DOMID)
parserFormElement
getFormElement :: Parser s -> ST s (Maybe DOMNode)
getFormElement :: forall s. Parser s -> ST s (Maybe DOMNode)
getFormElement Parser s
p = forall s. Parser s -> ST s (Maybe DOMID)
getFormID Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall b a. b -> (a -> b) -> Maybe a -> b
maybe (forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a. Maybe a
Nothing) (forall s. Parser s -> DOMID -> ST s (Maybe DOMNode)
getNode Parser s
p)
getFormType :: Parser s -> ST s (Maybe DOMType)
getFormType :: forall s. Parser s -> ST s (Maybe DOMType)
getFormType p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} =
forall s. Parser s -> ST s (Maybe DOMNode)
getFormElement Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall (f :: * -> *) a. Applicative f => a -> f a
pure forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall b a. b -> (a -> b) -> Maybe a -> b
maybe forall a. Maybe a
Nothing (forall a. a -> Maybe a
Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOMNode -> DOMType
domNodeType)
saveForm :: Parser s -> ST s ()
saveForm :: forall s. Parser s -> ST s ()
saveForm Parser s
p = forall s. Parser s -> ST s (Maybe DOMID)
currentNodeID Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall s. Parser s -> Maybe DOMID -> ST s ()
setFormID Parser s
p
formNotNull :: Parser s -> ST s Bool
formNotNull :: forall s. Parser s -> ST s Bool
formNotNull Parser s
p = forall a. Maybe a -> Bool
isJust forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s (Maybe DOMID)
getFormID Parser s
p
selfClosingInit :: Parser s -> Token -> ST s ()
selfClosingInit :: forall s. Parser s -> Token -> ST s ()
selfClosingInit p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
forall s a. STRef s a -> a -> ST s ()
wref STRef s Bool
parserSelfClosingFlag forall a b. (a -> b) -> a -> b
$
case Token
t of
TStart {Bool
[TAttr]
BS
tStartAttr :: [TAttr]
tStartClosed :: Bool
tStartName :: BS
tStartAttr :: Token -> [TAttr]
tStartClosed :: Token -> Bool
tStartName :: Token -> BS
..} -> Bool
tStartClosed
Token
_otherwise -> Bool
False
selfClosingAcknowledge :: Parser s -> ST s ()
selfClosingAcknowledge :: forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> a -> ST s ()
wref STRef s Bool
parserSelfClosingFlag Bool
False
selfClosingFlag :: Parser s -> ST s Bool
selfClosingFlag :: forall s. Parser s -> ST s Bool
selfClosingFlag Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> ST s a
rref STRef s Bool
parserSelfClosingFlag
fosterParenting :: Parser s -> ST s Bool
fosterParenting :: forall s. Parser s -> ST s Bool
fosterParenting Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> ST s a
rref STRef s Bool
parserFosterParenting
fosterParentingSet :: Parser s -> ST s ()
fosterParentingSet :: forall s. Parser s -> ST s ()
fosterParentingSet Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> a -> ST s ()
wref STRef s Bool
parserFosterParenting Bool
True
fosterParentingClear :: Parser s -> ST s ()
fosterParentingClear :: forall s. Parser s -> ST s ()
fosterParentingClear Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> a -> ST s ()
wref STRef s Bool
parserFosterParenting Bool
False
frameSetNotOK :: Parser s -> ST s ()
frameSetNotOK :: forall s. Parser s -> ST s ()
frameSetNotOK Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> a -> ST s ()
wref STRef s Bool
parserFrameSetOK Bool
False
iframeSrcDoc :: Parser s -> ST s Bool
iframeSrcDoc :: forall s. Parser s -> ST s Bool
iframeSrcDoc Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> ST s a
rref STRef s Bool
parserIFrameSrcDoc
parserSetDone :: Parser s -> ST s ()
parserSetDone :: forall s. Parser s -> ST s ()
parserSetDone Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> a -> ST s ()
wref STRef s Bool
parserDone Bool
True
activeFormatList :: Parser s -> ST s [ParserFormatItem]
activeFormatList :: forall s. Parser s -> ST s [ParserFormatItem]
activeFormatList Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> ST s a
rref STRef s [ParserFormatItem]
parserActiveFormatList
activeFormatNames :: Parser s -> ST s [BS]
activeFormatNames :: forall s. Parser s -> ST s [BS]
activeFormatNames Parser s
p = do
DOM
d <- forall s. Parser s -> ST s DOM
getDOM Parser s
p
forall a b. (a -> b) -> [a] -> [b]
map (DOM -> ParserFormatItem -> BS
f DOM
d) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s [ParserFormatItem]
activeFormatList Parser s
p
where f :: DOM -> ParserFormatItem -> BS
f DOM
d ParserFormatItem
ParserFormatMarker = BS
"marker"
f DOM
d (ParserFormatElement DOMID
i Token
t) =
DOMNode -> BS
domElementName forall a b. (a -> b) -> a -> b
$ forall a. HasCallStack => Maybe a -> a
fromJust forall a b. (a -> b) -> a -> b
$ DOM -> DOMID -> Maybe DOMNode
domGetNode DOM
d DOMID
i
activeFormatAddMarker :: Parser s -> ST s ()
activeFormatAddMarker :: forall s. Parser s -> ST s ()
activeFormatAddMarker Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} =
forall s a. STRef s a -> (a -> a) -> ST s ()
uref STRef s [ParserFormatItem]
parserActiveFormatList (ParserFormatItem
ParserFormatMarkerforall a. a -> [a] -> [a]
:)
activeFormatLimit :: (DOMID -> Bool) -> [ParserFormatItem] -> [ParserFormatItem]
activeFormatLimit :: (DOMID -> Bool) -> [ParserFormatItem] -> [ParserFormatItem]
activeFormatLimit DOMID -> Bool
match [ParserFormatItem]
xs =
DOMID -> [ParserFormatItem] -> [ParserFormatItem]
f DOMID
0 [ParserFormatItem]
xs
where
f :: Int -> [ParserFormatItem] -> [ParserFormatItem]
f :: DOMID -> [ParserFormatItem] -> [ParserFormatItem]
f DOMID
n [] = []
f DOMID
n (e :: ParserFormatItem
e@(ParserFormatItem
ParserFormatMarker):[ParserFormatItem]
es) = ParserFormatItem
e forall a. a -> [a] -> [a]
: [ParserFormatItem]
es
f DOMID
n (e :: ParserFormatItem
e@(ParserFormatElement DOMID
domId Token
_):[ParserFormatItem]
es)
| DOMID -> Bool
match DOMID
domId = if DOMID
n forall a. Ord a => a -> a -> Bool
< DOMID
2 then ParserFormatItem
e forall a. a -> [a] -> [a]
: DOMID -> [ParserFormatItem] -> [ParserFormatItem]
f (DOMID
n forall a. Num a => a -> a -> a
+ DOMID
1) [ParserFormatItem]
es else DOMID -> [ParserFormatItem] -> [ParserFormatItem]
f DOMID
n [ParserFormatItem]
es
| Bool
otherwise = ParserFormatItem
e forall a. a -> [a] -> [a]
: DOMID -> [ParserFormatItem] -> [ParserFormatItem]
f DOMID
n [ParserFormatItem]
es
activeFormatAddElement :: Parser s -> Token -> DOMID -> ST s ()
activeFormatAddElement :: forall s. Parser s -> Token -> DOMID -> ST s ()
activeFormatAddElement p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t DOMID
x = do
DOM
d <- forall s. Parser s -> ST s DOM
getDOM Parser s
p
[ParserFormatItem]
a <- forall s. Parser s -> ST s [ParserFormatItem]
activeFormatList Parser s
p
forall s a. STRef s a -> a -> ST s ()
wref STRef s [ParserFormatItem]
parserActiveFormatList forall a b. (a -> b) -> a -> b
$
DOMID -> Token -> ParserFormatItem
ParserFormatElement DOMID
x Token
t forall a. a -> [a] -> [a]
: (DOMID -> Bool) -> [ParserFormatItem] -> [ParserFormatItem]
activeFormatLimit (DOM -> DOMID -> DOMID -> Bool
domMatch DOM
d DOMID
x) [ParserFormatItem]
a
activeFormatAddCurrentNode :: Parser s -> Token -> ST s ()
activeFormatAddCurrentNode :: forall s. Parser s -> Token -> ST s ()
activeFormatAddCurrentNode p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
forall (m :: * -> *) a.
Monad m =>
m (Maybe a) -> (a -> m ()) -> m ()
whenJustM (forall s. Parser s -> ST s (Maybe DOMID)
currentNodeID Parser s
p) forall a b. (a -> b) -> a -> b
$ forall s. Parser s -> Token -> DOMID -> ST s ()
activeFormatAddElement Parser s
p Token
t
activeFormatAny :: Parser s -> (DOMNode -> Bool) -> ST s Bool
activeFormatAny :: forall s. Parser s -> (DOMNode -> Bool) -> ST s Bool
activeFormatAny p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} DOMNode -> Bool
f = do
DOM
d <- forall s. Parser s -> ST s DOM
getDOM Parser s
p
[ParserFormatItem]
a <- forall s. Parser s -> ST s [ParserFormatItem]
activeFormatList Parser s
p
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$
( forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any DOMNode -> Bool
f
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOM -> [DOMID] -> [DOMNode]
domMapID DOM
d
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (a -> Maybe b) -> [a] -> [b]
mapMaybe ParserFormatItem -> Maybe DOMID
g
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. (a -> Bool) -> [a] -> [a]
takeWhile (Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. ParserFormatItem -> Bool
formatItemIsMarker)
) [ParserFormatItem]
a
where
g :: ParserFormatItem -> Maybe DOMID
g :: ParserFormatItem -> Maybe DOMID
g = \case
ParserFormatElement DOMID
x Token
_ ->
forall a. a -> Maybe a
Just DOMID
x
ParserFormatItem
ParserFormatMarker ->
forall a. Maybe a
Nothing
activeFormatContains :: Parser s -> DOMID -> ST s Bool
activeFormatContains :: forall s. Parser s -> DOMID -> ST s Bool
activeFormatContains Parser s
p DOMID
x = forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any (DOMID -> ParserFormatItem -> Bool
formatItemHasID DOMID
x) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s [ParserFormatItem]
activeFormatList Parser s
p
activeFormatFindTag :: Parser s -> BS -> ST s (Maybe ParserFormatItem)
activeFormatFindTag :: forall s. Parser s -> BS -> ST s (Maybe ParserFormatItem)
activeFormatFindTag p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} BS
x = do
DOM
d <- forall s. Parser s -> ST s DOM
getDOM Parser s
p
[ParserFormatItem]
a <- forall s. Parser s -> ST s [ParserFormatItem]
activeFormatList Parser s
p
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$
( forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a
find (DOM -> BS -> ParserFormatItem -> Bool
formatItemHasTag DOM
d BS
x)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. (a -> Bool) -> [a] -> [a]
takeWhile (Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. ParserFormatItem -> Bool
formatItemIsMarker)
) [ParserFormatItem]
a
activeFormatFindToken :: Parser s -> DOMID -> ST s (Maybe Token)
activeFormatFindToken :: forall s. Parser s -> DOMID -> ST s (Maybe Token)
activeFormatFindToken p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} DOMID
x =
forall s. Parser s -> ST s [ParserFormatItem]
activeFormatList Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall {f :: * -> *}.
Applicative f =>
[ParserFormatItem] -> f (Maybe Token)
f
where
f :: [ParserFormatItem] -> f (Maybe Token)
f [] = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a. Maybe a
Nothing
f ((ParserFormatItem
ParserFormatMarker):[ParserFormatItem]
xs) = [ParserFormatItem] -> f (Maybe Token)
f [ParserFormatItem]
xs
f ((ParserFormatElement DOMID
i Token
t):[ParserFormatItem]
xs)
| DOMID
x forall a. Eq a => a -> a -> Bool
== DOMID
i = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ forall a. a -> Maybe a
Just Token
t
| Bool
otherwise = [ParserFormatItem] -> f (Maybe Token)
f [ParserFormatItem]
xs
activeFormatReconstruct :: Parser s -> ST s ()
activeFormatReconstruct :: forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p = do
[DOMID]
e <- forall s. Parser s -> ST s [DOMID]
elementStack Parser s
p
[ParserFormatItem]
a <- forall s. Parser s -> ST s [ParserFormatItem]
activeFormatList Parser s
p
case [ParserFormatItem]
a of
[] -> forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
(ParserFormatItem
x:[ParserFormatItem]
xs)
| [DOMID] -> ParserFormatItem -> Bool
openOrMarker [DOMID]
e ParserFormatItem
x -> forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
| Bool
otherwise -> do
let b :: [ParserFormatItem]
b = forall a. [a] -> [a]
reverse forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. (a -> Bool) -> [a] -> [a]
takeWhile (Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. [DOMID] -> ParserFormatItem -> Bool
openOrMarker [DOMID]
e) forall a b. (a -> b) -> a -> b
$ [ParserFormatItem]
a
a' :: [ParserFormatItem]
a' = forall a. DOMID -> [a] -> [a]
drop (forall (t :: * -> *) a. Foldable t => t a -> DOMID
length [ParserFormatItem]
b) [ParserFormatItem]
a
forall s.
Parser s -> [ParserFormatItem] -> [ParserFormatItem] -> ST s ()
reopen Parser s
p [ParserFormatItem]
b [ParserFormatItem]
a'
openOrMarker :: [DOMID] -> ParserFormatItem -> Bool
openOrMarker :: [DOMID] -> ParserFormatItem -> Bool
openOrMarker [DOMID]
x = \case
ParserFormatItem
ParserFormatMarker -> Bool
True
ParserFormatElement DOMID
i Token
_ -> DOMID
i forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` [DOMID]
x
reopen :: Parser s -> [ParserFormatItem] -> [ParserFormatItem] -> ST s ()
reopen :: forall s.
Parser s -> [ParserFormatItem] -> [ParserFormatItem] -> ST s ()
reopen p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} [ParserFormatItem]
b [ParserFormatItem]
a =
case [ParserFormatItem]
b of
[] ->
forall s a. STRef s a -> a -> ST s ()
wref STRef s [ParserFormatItem]
parserActiveFormatList [ParserFormatItem]
a
((ParserFormatItem
ParserFormatMarker):[ParserFormatItem]
xs) ->
forall s.
Parser s -> [ParserFormatItem] -> [ParserFormatItem] -> ST s ()
reopen Parser s
p [ParserFormatItem]
xs [ParserFormatItem]
a
((ParserFormatElement DOMID
_ Token
t):[ParserFormatItem]
xs) -> do
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
DOMID
i <- forall a. HasCallStack => Maybe a -> a
fromJust forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s (Maybe DOMID)
currentNodeID Parser s
p
forall s.
Parser s -> [ParserFormatItem] -> [ParserFormatItem] -> ST s ()
reopen Parser s
p [ParserFormatItem]
xs forall a b. (a -> b) -> a -> b
$ DOMID -> Token -> ParserFormatItem
ParserFormatElement DOMID
i Token
t forall a. a -> [a] -> [a]
: [ParserFormatItem]
a
activeFormatClear :: Parser s -> ST s ()
activeFormatClear :: forall s. Parser s -> ST s ()
activeFormatClear Parser s
p =
forall s.
Parser s -> ([ParserFormatItem] -> [ParserFormatItem]) -> ST s ()
activeFormatModify Parser s
p forall a b. (a -> b) -> a -> b
$ forall a. DOMID -> [a] -> [a]
drop DOMID
1 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. (a -> Bool) -> [a] -> [a]
dropWhile (Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. ParserFormatItem -> Bool
formatItemIsMarker)
activeFormatRemove :: Parser s -> DOMID -> ST s ()
activeFormatRemove :: forall s. Parser s -> DOMID -> ST s ()
activeFormatRemove Parser s
p DOMID
x =
forall s.
Parser s -> ([ParserFormatItem] -> [ParserFormatItem]) -> ST s ()
activeFormatModify Parser s
p forall a b. (a -> b) -> a -> b
$ forall a. (a -> Bool) -> [a] -> [a]
filter forall a b. (a -> b) -> a -> b
$ Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOMID -> ParserFormatItem -> Bool
formatItemHasID DOMID
x
activeFormatReplace :: Parser s -> DOMID -> DOMID -> ST s ()
activeFormatReplace :: forall s. Parser s -> DOMID -> DOMID -> ST s ()
activeFormatReplace Parser s
p DOMID
x DOMID
y =
forall s.
Parser s -> ([ParserFormatItem] -> [ParserFormatItem]) -> ST s ()
activeFormatModify Parser s
p forall a b. (a -> b) -> a -> b
$ forall a b. (a -> b) -> [a] -> [b]
map ParserFormatItem -> ParserFormatItem
f
where
f :: ParserFormatItem -> ParserFormatItem
f z :: ParserFormatItem
z@(ParserFormatItem
ParserFormatMarker) = ParserFormatItem
z
f z :: ParserFormatItem
z@(ParserFormatElement DOMID
i Token
t)
| DOMID
i forall a. Eq a => a -> a -> Bool
== DOMID
x = DOMID -> Token -> ParserFormatItem
ParserFormatElement DOMID
y Token
t
| Bool
otherwise = ParserFormatItem
z
activeFormatModify :: Parser s -> ([ParserFormatItem] -> [ParserFormatItem]) -> ST s ()
activeFormatModify :: forall s.
Parser s -> ([ParserFormatItem] -> [ParserFormatItem]) -> ST s ()
activeFormatModify Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> (a -> a) -> ST s ()
uref STRef s [ParserFormatItem]
parserActiveFormatList
activeFormatSucc :: Parser s -> DOMID -> ST s (Maybe DOMID)
activeFormatSucc :: forall s. Parser s -> DOMID -> ST s (Maybe DOMID)
activeFormatSucc Parser s
p DOMID
x =
[ParserFormatItem] -> Maybe DOMID
f forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s [ParserFormatItem]
activeFormatList Parser s
p
where
f :: [ParserFormatItem] -> Maybe DOMID
f [ParserFormatItem]
a = case forall a. (a -> Bool) -> [a] -> Maybe a
findSucc (DOMID -> ParserFormatItem -> Bool
formatItemHasID DOMID
x) [ParserFormatItem]
a of
Just (ParserFormatElement DOMID
i Token
_) -> forall a. a -> Maybe a
Just DOMID
i
Maybe ParserFormatItem
_otherwise -> forall a. Maybe a
Nothing
activeFormatInsertElement :: Parser s -> DOMID -> Token -> Maybe DOMID -> ST s ()
activeFormatInsertElement :: forall s. Parser s -> DOMID -> Token -> Maybe DOMID -> ST s ()
activeFormatInsertElement Parser s
p DOMID
x Token
t Maybe DOMID
y =
case Maybe DOMID
y of
Just DOMID
a -> forall s.
Parser s -> ([ParserFormatItem] -> [ParserFormatItem]) -> ST s ()
activeFormatModify Parser s
p forall a b. (a -> b) -> a -> b
$ forall a. (a -> Bool) -> a -> [a] -> [a]
insertBefore (DOMID -> ParserFormatItem -> Bool
formatItemHasID DOMID
a) ParserFormatItem
e
Maybe DOMID
Nothing -> forall s.
Parser s -> ([ParserFormatItem] -> [ParserFormatItem]) -> ST s ()
activeFormatModify Parser s
p (forall a. Semigroup a => a -> a -> a
<>[ParserFormatItem
e])
where
e :: ParserFormatItem
e = DOMID -> Token -> ParserFormatItem
ParserFormatElement DOMID
x Token
t
formatItemIsMarker :: ParserFormatItem -> Bool
formatItemIsMarker :: ParserFormatItem -> Bool
formatItemIsMarker ParserFormatItem
ParserFormatMarker = Bool
True
formatItemIsMarker (ParserFormatElement DOMID
_ Token
_) = Bool
False
formatItemHasID :: DOMID -> ParserFormatItem -> Bool
formatItemHasID :: DOMID -> ParserFormatItem -> Bool
formatItemHasID DOMID
x ParserFormatItem
ParserFormatMarker = Bool
False
formatItemHasID DOMID
x (ParserFormatElement DOMID
i Token
_) = DOMID
i forall a. Eq a => a -> a -> Bool
== DOMID
x
formatItemHasTag :: DOM -> BS -> ParserFormatItem -> Bool
formatItemHasTag :: DOM -> BS -> ParserFormatItem -> Bool
formatItemHasTag DOM
d BS
n ParserFormatItem
ParserFormatMarker = Bool
False
formatItemHasTag DOM
d BS
n (ParserFormatElement DOMID
i Token
_) =
case DOM -> DOMID -> Maybe DOMNode
domGetNode DOM
d DOMID
i of
Just DOMNode
x -> DOMNode -> BS
domNodeElementName DOMNode
x forall a. Eq a => a -> a -> Bool
== BS
n
Maybe DOMNode
Nothing -> Bool
False
templateModeCurrent :: Parser s -> ST s (Maybe ParserMode)
templateModeCurrent :: forall s. Parser s -> ST s (Maybe ParserMode)
templateModeCurrent p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall a. [a] -> Maybe a
listToMaybe forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s a. STRef s a -> ST s a
rref STRef s [ParserMode]
parserTemplateMode
templateModePush :: Parser s -> ParserMode -> ST s ()
templateModePush :: forall s. Parser s -> ParserMode -> ST s ()
templateModePush p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} ParserMode
x = forall s a. STRef s a -> (a -> a) -> ST s ()
uref STRef s [ParserMode]
parserTemplateMode (ParserMode
xforall a. a -> [a] -> [a]
:)
templateModePop :: Parser s -> ST s ()
templateModePop :: forall s. Parser s -> ST s ()
templateModePop p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} =
forall s a. STRef s a -> ST s a
rref STRef s [ParserMode]
parserTemplateMode forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
(ParserMode
x:[ParserMode]
xs) -> forall s a. STRef s a -> a -> ST s ()
wref STRef s [ParserMode]
parserTemplateMode [ParserMode]
xs
[] -> forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p forall a. Maybe a
Nothing BS
"attempt to pop empty template mode stack"
templateModeCount :: Parser s -> ST s Int
templateModeCount :: forall s. Parser s -> ST s DOMID
templateModeCount p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall (t :: * -> *) a. Foldable t => t a -> DOMID
length forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s a. STRef s a -> ST s a
rref STRef s [ParserMode]
parserTemplateMode
appropriateInsertionLocation :: Parser s -> Maybe DOMID -> ST s DOMPos
appropriateInsertionLocation :: forall s. Parser s -> Maybe DOMID -> ST s DOMPos
appropriateInsertionLocation p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Maybe DOMID
override = do
DOMID
target <- case Maybe DOMID
override of
Just DOMID
a -> forall (f :: * -> *) a. Applicative f => a -> f a
pure DOMID
a
Maybe DOMID
Nothing -> forall b a. b -> (a -> b) -> Maybe a -> b
maybe DOMID
domRoot forall a. a -> a
id forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s (Maybe DOMID)
currentNodeID Parser s
p
forall s. Parser s -> DOMID -> ST s (Maybe DOMNode)
getNode Parser s
p DOMID
target forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Maybe DOMNode
Nothing ->
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ DOMID -> Maybe DOMID -> DOMPos
DOMPos DOMID
domRoot forall a. Maybe a
Nothing
Just DOMNode
n -> do
Bool
f <- forall s. Parser s -> ST s Bool
fosterParenting Parser s
p
DOMPos
adjusted <-
if Bool
f Bool -> Bool -> Bool
&& DOMNode -> BS
domNodeElementName DOMNode
n forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem`
[ BS
"table", BS
"tbody", BS
"tfoot", BS
"thead", BS
"tr" ]
then do
Maybe ElementDetails
lastTemplate <- forall s.
Parser s -> (ElementDetails -> Bool) -> ST s (Maybe ElementDetails)
elementStackFind Parser s
p forall a b. (a -> b) -> a -> b
$ \ElementDetails
x ->
ElementDetails -> DOMType
elementDetailsType ElementDetails
x forall a. Eq a => a -> a -> Bool
== BS -> DOMType
domMakeTypeHTML BS
"template"
Maybe ElementDetails
lastTable <- forall s.
Parser s -> (ElementDetails -> Bool) -> ST s (Maybe ElementDetails)
elementStackFind Parser s
p forall a b. (a -> b) -> a -> b
$ \ElementDetails
x ->
ElementDetails -> DOMType
elementDetailsType ElementDetails
x forall a. Eq a => a -> a -> Bool
== BS -> DOMType
domMakeTypeHTML BS
"table"
if | Just (ElementDetails DOMID
i1 DOMID
_ DOMNode
n1 DOMType
_) <- Maybe ElementDetails
lastTemplate
, Just (ElementDetails DOMID
i2 DOMID
_ DOMNode
_ DOMType
_) <- Maybe ElementDetails
lastTable
, DOMID
i1 forall a. Ord a => a -> a -> Bool
< DOMID
i2 -> do
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ DOMID -> Maybe DOMID -> DOMPos
DOMPos (DOMNode -> DOMID
domTemplateContents DOMNode
n1) forall a. Maybe a
Nothing
| Just (ElementDetails DOMID
_ DOMID
_ DOMNode
n1 DOMType
_) <- Maybe ElementDetails
lastTemplate
, Maybe ElementDetails
Nothing <- Maybe ElementDetails
lastTable -> do
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ DOMID -> Maybe DOMID -> DOMPos
DOMPos (DOMNode -> DOMID
domTemplateContents DOMNode
n1) forall a. Maybe a
Nothing
| Bool
otherwise -> case Maybe ElementDetails
lastTable of
Maybe ElementDetails
Nothing -> do
DOMID
j <- forall a. HasCallStack => Maybe a -> a
fromJust forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s (Maybe DOMID)
lastNodeID Parser s
p
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ DOMID -> Maybe DOMID -> DOMPos
DOMPos DOMID
j forall a. Maybe a
Nothing
Just (ElementDetails DOMID
_ DOMID
x2 DOMNode
n2 DOMType
_) -> do
if | DOMNode -> DOMID
domNodeParent DOMNode
n2 forall a. Eq a => a -> a -> Bool
/= DOMID
domNull ->
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ DOMID -> Maybe DOMID -> DOMPos
DOMPos (DOMNode -> DOMID
domNodeParent DOMNode
n2) forall a b. (a -> b) -> a -> b
$ forall a. a -> Maybe a
Just DOMID
x2
| Bool
otherwise -> do
DOMID
prev <- forall a. HasCallStack => Maybe a -> a
fromJust forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> DOMID -> ST s (Maybe DOMID)
elementStackSucc Parser s
p DOMID
x2
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ DOMID -> Maybe DOMID -> DOMPos
DOMPos DOMID
prev forall a. Maybe a
Nothing
else
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ DOMID -> Maybe DOMID -> DOMPos
DOMPos DOMID
target forall a. Maybe a
Nothing
forall s. Parser s -> DOMID -> ST s (Maybe DOMNode)
getNode Parser s
p (DOMPos -> DOMID
domPosParent DOMPos
adjusted) forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Just DOMTemplate{DOMID
Seq DOMAttr
HTMLNamespace
domTemplateAttributes :: DOMNode -> Seq DOMAttr
domTemplateNamespace :: DOMNode -> HTMLNamespace
domTemplateParent :: DOMNode -> DOMID
domTemplateID :: DOMNode -> DOMID
domTemplateContents :: DOMID
domTemplateAttributes :: Seq DOMAttr
domTemplateNamespace :: HTMLNamespace
domTemplateParent :: DOMID
domTemplateID :: DOMID
domTemplateContents :: DOMNode -> DOMID
..} ->
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ DOMID -> Maybe DOMID -> DOMPos
DOMPos DOMID
domTemplateContents forall a. Maybe a
Nothing
Maybe DOMNode
_otherwise ->
forall (f :: * -> *) a. Applicative f => a -> f a
pure DOMPos
adjusted
insertionLocation :: Parser s -> ST s DOMPos
insertionLocation :: forall s. Parser s -> ST s DOMPos
insertionLocation Parser s
p = forall s. Parser s -> Maybe DOMID -> ST s DOMPos
appropriateInsertionLocation Parser s
p forall a. Maybe a
Nothing
createElementForToken :: Parser s -> Token -> HTMLNamespace -> ST s DOMID
createElementForToken :: forall s. Parser s -> Token -> HTMLNamespace -> ST s DOMID
createElementForToken Parser s
p Token
t HTMLNamespace
s
| Token -> BS
tStartName Token
t forall a. Eq a => a -> a -> Bool
== BS
"template" = do
DOMID
i <- forall s. Parser s -> DOMNode -> ST s DOMID
newID Parser s
p forall a b. (a -> b) -> a -> b
$ DOMNode
domDefaultFragment
DOMID
j <- forall s. Parser s -> DOMNode -> ST s DOMID
newID Parser s
p forall a b. (a -> b) -> a -> b
$ DOMTemplate
{ domTemplateID :: DOMID
domTemplateID = DOMID
domNull
, domTemplateNamespace :: HTMLNamespace
domTemplateNamespace = HTMLNamespace
s
, domTemplateAttributes :: Seq DOMAttr
domTemplateAttributes = forall a. Seq a
Seq.empty
, domTemplateContents :: DOMID
domTemplateContents = DOMID
i
, domTemplateParent :: DOMID
domTemplateParent = DOMID
domNull
}
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p forall a b. (a -> b) -> a -> b
$ DOMID -> DOMID -> DOM -> DOM
domSetParent DOMID
i DOMID
j
forall (f :: * -> *) a. Applicative f => a -> f a
pure DOMID
j
| Bool
otherwise = do
DOMID
i <- forall s. Parser s -> DOMNode -> ST s DOMID
newID Parser s
p forall a b. (a -> b) -> a -> b
$ DOMElement
{ domElementID :: DOMID
domElementID = DOMID
domNull
, domElementName :: BS
domElementName = Token -> BS
tStartName Token
t
, domElementNamespace :: HTMLNamespace
domElementNamespace = HTMLNamespace
s
, domElementAttributes :: Seq DOMAttr
domElementAttributes = forall a. [a] -> Seq a
Seq.fromList forall a b. (a -> b) -> a -> b
$ forall a b. (a -> b) -> [a] -> [b]
map TAttr -> DOMAttr
f (Token -> [TAttr]
tStartAttr Token
t)
, domElementChildren :: Seq DOMID
domElementChildren = forall a. Seq a
Seq.empty
, domElementParent :: DOMID
domElementParent = DOMID
domNull
}
forall (f :: * -> *) a. Applicative f => a -> f a
pure DOMID
i
where
f :: TAttr -> DOMAttr
f (TAttr BS
n BS
v HTMLAttrNamespace
s) = BS -> BS -> HTMLAttrNamespace -> DOMAttr
DOMAttr BS
n BS
v HTMLAttrNamespace
s
insertForeignElement :: Parser s -> HTMLNamespace -> Token -> ST s ()
insertForeignElement :: forall s. Parser s -> HTMLNamespace -> Token -> ST s ()
insertForeignElement Parser s
p HTMLNamespace
n =
forall s. (Token -> ST s ()) -> Token -> ST s ()
withStartToken forall a b. (a -> b) -> a -> b
$ \Token
t -> do
DOMID
i <- forall s. Parser s -> Token -> HTMLNamespace -> ST s DOMID
createElementForToken Parser s
p Token
t HTMLNamespace
n
DOMPos
x <- forall s. Parser s -> ST s DOMPos
insertionLocation Parser s
p
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p forall a b. (a -> b) -> a -> b
$ DOMPos -> DOMID -> DOM -> DOM
domInsert DOMPos
x DOMID
i
forall s. Parser s -> DOMID -> ST s ()
elementStackPush Parser s
p DOMID
i
insertHtmlElement :: Parser s -> Token -> ST s ()
insertHtmlElement :: forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p = forall s. Parser s -> HTMLNamespace -> Token -> ST s ()
insertForeignElement Parser s
p HTMLNamespace
HTMLNamespaceHTML
insertMathMLElement :: Parser s -> Token -> ST s ()
insertMathMLElement :: forall s. Parser s -> Token -> ST s ()
insertMathMLElement Parser s
p = forall s. Parser s -> HTMLNamespace -> Token -> ST s ()
insertForeignElement Parser s
p HTMLNamespace
HTMLNamespaceMathML
insertSvgElement :: Parser s -> Token -> ST s ()
insertSvgElement :: forall s. Parser s -> Token -> ST s ()
insertSvgElement Parser s
p = forall s. Parser s -> HTMLNamespace -> Token -> ST s ()
insertForeignElement Parser s
p HTMLNamespace
HTMLNamespaceSVG
insertHtmlElementNamed :: Parser s -> BS -> ST s ()
insertHtmlElementNamed :: forall s. Parser s -> BS -> ST s ()
insertHtmlElementNamed Parser s
p BS
x = forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p forall a b. (a -> b) -> a -> b
$ BS -> Bool -> [TAttr] -> Token
TStart BS
x Bool
False []
adjustAttrMathML :: Token -> Token
adjustAttrMathML :: Token -> Token
adjustAttrMathML Token
t =
case Token
t of
TStart {} -> Token
t { tStartAttr :: [TAttr]
tStartAttr = forall a b. (a -> b) -> [a] -> [b]
map TAttr -> TAttr
f forall a b. (a -> b) -> a -> b
$ Token -> [TAttr]
tStartAttr Token
t }
Token
_otherwise -> Token
t
where
f :: TAttr -> TAttr
f (TAttr BS
n BS
v HTMLAttrNamespace
s) = BS -> BS -> HTMLAttrNamespace -> TAttr
TAttr (forall {a}. (Eq a, IsString a) => a -> a
g BS
n) BS
v HTMLAttrNamespace
s
g :: a -> a
g a
x = if a
x forall a. Eq a => a -> a -> Bool
== a
"definitionurl" then a
"definitionUrl" else a
x
adjustAttrSVG :: Token -> Token
adjustAttrSVG :: Token -> Token
adjustAttrSVG Token
token =
case Token
token of
TStart {Bool
[TAttr]
BS
tStartAttr :: [TAttr]
tStartClosed :: Bool
tStartName :: BS
tStartAttr :: Token -> [TAttr]
tStartClosed :: Token -> Bool
tStartName :: Token -> BS
..} ->
Token
token { tStartAttr :: [TAttr]
tStartAttr = forall a b. (a -> b) -> [a] -> [b]
map TAttr -> TAttr
f [TAttr]
tStartAttr }
Token
_otherwise ->
Token
token
where
f :: TAttr -> TAttr
f a :: TAttr
a@(TAttr BS
n BS
v HTMLAttrNamespace
s) =
case forall k a. Ord k => k -> Map k a -> Maybe a
Map.lookup BS
n Map BS BS
svgAttributeMap of
Just BS
n' -> BS -> BS -> HTMLAttrNamespace -> TAttr
TAttr BS
n' BS
v HTMLAttrNamespace
s
Maybe BS
Nothing -> TAttr
a
adjustAttrForeign :: Token -> Token
adjustAttrForeign :: Token -> Token
adjustAttrForeign Token
token =
case Token
token of
TStart {Bool
[TAttr]
BS
tStartAttr :: [TAttr]
tStartClosed :: Bool
tStartName :: BS
tStartAttr :: Token -> [TAttr]
tStartClosed :: Token -> Bool
tStartName :: Token -> BS
..} ->
Token
token { tStartAttr :: [TAttr]
tStartAttr = forall a b. (a -> b) -> [a] -> [b]
map TAttr -> TAttr
f [TAttr]
tStartAttr }
Token
_otherwise ->
Token
token
where
f :: TAttr -> TAttr
f a :: TAttr
a@(TAttr BS
n BS
v HTMLAttrNamespace
s) =
case forall k a. Ord k => k -> Map k a -> Maybe a
Map.lookup BS
n Map BS (BS, HTMLAttrNamespace)
foreignAttributeMap of
Just (BS
n', HTMLAttrNamespace
s') -> BS -> BS -> HTMLAttrNamespace -> TAttr
TAttr BS
n' BS
v HTMLAttrNamespace
s'
Maybe (BS, HTMLAttrNamespace)
Nothing -> TAttr
a
adjustElemSVG :: Token -> Token
adjustElemSVG :: Token -> Token
adjustElemSVG Token
token =
case Token
token of
TStart {Bool
[TAttr]
BS
tStartAttr :: [TAttr]
tStartClosed :: Bool
tStartName :: BS
tStartAttr :: Token -> [TAttr]
tStartClosed :: Token -> Bool
tStartName :: Token -> BS
..} ->
case forall k a. Ord k => k -> Map k a -> Maybe a
Map.lookup BS
tStartName Map BS BS
svgElementMap of
Just BS
x -> Token
token { tStartName :: BS
tStartName = BS
x }
Maybe BS
Nothing -> Token
token
Token
_otherwise ->
Token
token
svgAttributeMap :: Map BS BS
svgAttributeMap :: Map BS BS
svgAttributeMap = forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList
[ (BS
"attributename", BS
"attributeName")
, (BS
"attributetype", BS
"attributeType")
, (BS
"basefrequency", BS
"baseFrequency")
, (BS
"baseprofile", BS
"baseProfile")
, (BS
"calcmode", BS
"calcMode")
, (BS
"clippathunits", BS
"clipPathUnits")
, (BS
"diffuseconstant", BS
"diffuseConstant")
, (BS
"edgemode", BS
"edgeMode")
, (BS
"filterunits", BS
"filterUnits")
, (BS
"glyphref", BS
"glyphRef")
, (BS
"gradienttransform", BS
"gradientTransform")
, (BS
"gradientunits", BS
"gradientUnits")
, (BS
"kernelmatrix", BS
"kernelMatrix")
, (BS
"kernelunitlength", BS
"kernelUnitLength")
, (BS
"keypoints", BS
"keyPoints")
, (BS
"keysplines", BS
"keySplines")
, (BS
"keytimes", BS
"keyTimes")
, (BS
"lengthadjust", BS
"lengthAdjust")
, (BS
"limitingconeangle", BS
"limitingConeAngle")
, (BS
"markerheight", BS
"markerHeight")
, (BS
"markerunits", BS
"markerUnits")
, (BS
"markerwidth", BS
"markerWidth")
, (BS
"maskcontentunits", BS
"maskContentUnits")
, (BS
"maskunits", BS
"maskUnits")
, (BS
"numoctaves", BS
"numOctaves")
, (BS
"pathlength", BS
"pathLength")
, (BS
"patterncontentunits", BS
"patternContentUnits")
, (BS
"patterntransform", BS
"patternTransform")
, (BS
"patternunits", BS
"patternUnits")
, (BS
"pointsatx", BS
"pointsAtX")
, (BS
"pointsaty", BS
"pointsAtY")
, (BS
"pointsatz", BS
"pointsAtZ")
, (BS
"preservealpha", BS
"preserveAlpha")
, (BS
"preserveaspectratio", BS
"preserveAspectRatio")
, (BS
"primitiveunits", BS
"primitiveUnits")
, (BS
"refx", BS
"refX")
, (BS
"refy", BS
"refY")
, (BS
"repeatcount", BS
"repeatCount")
, (BS
"repeatdur", BS
"repeatDur")
, (BS
"requiredextensions", BS
"requiredExtensions")
, (BS
"requiredfeatures", BS
"requiredFeatures")
, (BS
"specularconstant", BS
"specularConstant")
, (BS
"specularexponent", BS
"specularExponent")
, (BS
"spreadmethod", BS
"spreadMethod")
, (BS
"startoffset", BS
"startOffset")
, (BS
"stddeviation", BS
"stdDeviation")
, (BS
"stitchtiles", BS
"stitchTiles")
, (BS
"surfacescale", BS
"surfaceScale")
, (BS
"systemlanguage", BS
"systemLanguage")
, (BS
"tablevalues", BS
"tableValues")
, (BS
"targetx", BS
"targetX")
, (BS
"targety", BS
"targetY")
, (BS
"textlength", BS
"textLength")
, (BS
"viewbox", BS
"viewBox")
, (BS
"viewtarget", BS
"viewTarget")
, (BS
"xchannelselector", BS
"xChannelSelector")
, (BS
"ychannelselector", BS
"yChannelSelector")
, (BS
"zoomandpan", BS
"zoomAndPan")
]
svgElementMap :: Map BS BS
svgElementMap :: Map BS BS
svgElementMap = forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList
[ (BS
"altglyph", BS
"altGlyph")
, (BS
"altglyphdef", BS
"altGlyphDef")
, (BS
"altglyphitem", BS
"altGlyphItem")
, (BS
"animatecolor", BS
"animateColor")
, (BS
"animatemotion", BS
"animateMotion")
, (BS
"animatetransform", BS
"animateTransform")
, (BS
"clippath", BS
"clipPath")
, (BS
"feblend", BS
"feBlend")
, (BS
"fecolormatrix", BS
"feColorMatrix")
, (BS
"fecomponenttransfer", BS
"feComponentTransfer")
, (BS
"fecomposite", BS
"feComposite")
, (BS
"feconvolvematrix", BS
"feConvolveMatrix")
, (BS
"fediffuselighting", BS
"feDiffuseLighting")
, (BS
"fedisplacementmap", BS
"feDisplacementMap")
, (BS
"fedistantlight", BS
"feDistantLight")
, (BS
"fedropshadow", BS
"feDropShadow")
, (BS
"feflood", BS
"feFlood")
, (BS
"fefunca", BS
"feFuncA")
, (BS
"fefuncb", BS
"feFuncB")
, (BS
"fefuncg", BS
"feFuncG")
, (BS
"fefuncr", BS
"feFuncR")
, (BS
"fegaussianblur", BS
"feGaussianBlur")
, (BS
"feimage", BS
"feImage")
, (BS
"femerge", BS
"feMerge")
, (BS
"femergenode", BS
"feMergeNode")
, (BS
"femorphology", BS
"feMorphology")
, (BS
"feoffset", BS
"feOffset")
, (BS
"fepointlight", BS
"fePointLight")
, (BS
"fespecularlighting", BS
"feSpecularLighting")
, (BS
"fespotlight", BS
"feSpotLight")
, (BS
"fetile", BS
"feTile")
, (BS
"feturbulence", BS
"feTurbulence")
, (BS
"foreignobject", BS
"foreignObject")
, (BS
"glyphref", BS
"glyphRef")
, (BS
"lineargradient", BS
"linearGradient")
, (BS
"radialgradient", BS
"radialGradient")
, (BS
"textpath", BS
"textPath")
]
foreignAttributeMap :: Map BS (BS, HTMLAttrNamespace)
foreignAttributeMap :: Map BS (BS, HTMLAttrNamespace)
foreignAttributeMap = forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList
[ (BS
"xlink:actuate", (BS
"actuate", HTMLAttrNamespace
HTMLAttrNamespaceXLink))
, (BS
"xlink:arcrole", (BS
"arcrole", HTMLAttrNamespace
HTMLAttrNamespaceXLink))
, (BS
"xlink:href", (BS
"href", HTMLAttrNamespace
HTMLAttrNamespaceXLink))
, (BS
"xlink:role", (BS
"role", HTMLAttrNamespace
HTMLAttrNamespaceXLink))
, (BS
"xlink:show", (BS
"show", HTMLAttrNamespace
HTMLAttrNamespaceXLink))
, (BS
"xlink:title", (BS
"title", HTMLAttrNamespace
HTMLAttrNamespaceXLink))
, (BS
"xlink:type", (BS
"type", HTMLAttrNamespace
HTMLAttrNamespaceXLink))
, (BS
"xml:lang", (BS
"lang", HTMLAttrNamespace
HTMLAttrNamespaceXML))
, (BS
"xml:space", (BS
"space", HTMLAttrNamespace
HTMLAttrNamespaceXML))
, (BS
"xmlns", (BS
"xmlns", HTMLAttrNamespace
HTMLAttrNamespaceXMLNS))
, (BS
"xmlns:xlink", (BS
"xlink", HTMLAttrNamespace
HTMLAttrNamespaceXMLNS))
]
insertNode :: Parser s -> DOMPos -> DOMID -> ST s ()
insertNode :: forall s. Parser s -> DOMPos -> DOMID -> ST s ()
insertNode p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} DOMPos
i DOMID
x = forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p forall a b. (a -> b) -> a -> b
$ DOMPos -> DOMID -> DOM -> DOM
domInsert DOMPos
i DOMID
x
insertNewNode :: Parser s -> DOMPos -> DOMNode -> ST s DOMID
insertNewNode :: forall s. Parser s -> DOMPos -> DOMNode -> ST s DOMID
insertNewNode p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} DOMPos
i DOMNode
x = do
DOM
d <- forall s. Parser s -> ST s DOM
getDOM Parser s
p
let (DOM
d', DOMID
j) = DOMPos -> DOMNode -> DOM -> (DOM, DOMID)
domInsertNew DOMPos
i DOMNode
x DOM
d
forall s. Parser s -> DOM -> ST s ()
setDOM Parser s
p DOM
d'
forall (f :: * -> *) a. Applicative f => a -> f a
pure DOMID
j
insertDocumentNode :: Parser s -> DOMID -> ST s ()
insertDocumentNode :: forall s. Parser s -> DOMID -> ST s ()
insertDocumentNode p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s. Parser s -> DOMPos -> DOMID -> ST s ()
insertNode Parser s
p DOMPos
domRootPos
insertNewDocumentNode :: Parser s -> DOMNode -> ST s ()
insertNewDocumentNode :: forall s. Parser s -> DOMNode -> ST s ()
insertNewDocumentNode p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall (f :: * -> *) a. Functor f => f a -> f ()
void forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s. Parser s -> DOMPos -> DOMNode -> ST s DOMID
insertNewNode Parser s
p DOMPos
domRootPos
commentMake :: Parser s -> Token -> ST s DOMNode
p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
forall (f :: * -> *) a. Applicative f => a -> f a
pure DOMComment
{ domCommentID :: DOMID
domCommentID = DOMID
domNull
, domCommentData :: BS
domCommentData = Token -> BS
tCommentData Token
t
, domCommentParent :: DOMID
domCommentParent = DOMID
domNull
}
doctypeMake :: Parser s -> Token -> ST s DOMNode
doctypeMake :: forall s. Parser s -> Token -> ST s DOMNode
doctypeMake p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
TDoctype {Bool
Maybe BS
BS
tDoctypeSystem :: Maybe BS
tDoctypePublic :: Maybe BS
tDoctypeQuirks :: Bool
tDoctypeName :: BS
tDoctypeSystem :: Token -> Maybe BS
tDoctypePublic :: Token -> Maybe BS
tDoctypeQuirks :: Token -> Bool
tDoctypeName :: Token -> BS
..} ->
DOMDoctype
{ domDoctypeID :: DOMID
domDoctypeID = DOMID
domNull
, domDoctypeName :: BS
domDoctypeName = BS
tDoctypeName
, domDoctypePublicID :: Maybe BS
domDoctypePublicID = Maybe BS
tDoctypePublic
, domDoctypeSystemID :: Maybe BS
domDoctypeSystemID = Maybe BS
tDoctypeSystem
, domDoctypeParent :: DOMID
domDoctypeParent = DOMID
domNull
}
Token
_otherwise ->
DOMNode
domDefaultDoctype
insertComment :: Parser s -> Token -> ST s ()
p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
forall s. Parser s -> ST s DOMPos
insertionLocation Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \DOMPos
x ->
forall s. Parser s -> Token -> ST s DOMNode
commentMake Parser s
p Token
t forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall (f :: * -> *) a. Functor f => f a -> f ()
void forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s. Parser s -> DOMPos -> DOMNode -> ST s DOMID
insertNewNode Parser s
p DOMPos
x
insertDocComment :: Parser s -> Token -> ST s ()
p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
forall s. Parser s -> Token -> ST s DOMNode
commentMake Parser s
p Token
t forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall (f :: * -> *) a. Functor f => f a -> f ()
void forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s. Parser s -> DOMPos -> DOMNode -> ST s DOMID
insertNewNode Parser s
p DOMPos
domRootPos
insertChar :: Parser s -> Token -> ST s ()
insertChar :: forall s. Parser s -> Token -> ST s ()
insertChar p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} =
forall s. (Word8 -> ST s ()) -> Token -> ST s ()
withCharToken forall a b. (a -> b) -> a -> b
$ \Word8
w -> do
DOMPos
pos <- forall s. Parser s -> ST s DOMPos
insertionLocation Parser s
p
let i :: DOMID
i = DOMPos -> DOMID
domPosParent DOMPos
pos
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (DOMID
i forall a. Eq a => a -> a -> Bool
/= DOMID
domRoot) forall a b. (a -> b) -> a -> b
$ do
DOM
d <- forall s. Parser s -> ST s DOM
getDOM Parser s
p
case DOM -> DOMID -> Maybe DOMID
domLastChild DOM
d DOMID
i of
Maybe DOMID
Nothing -> do
DOMID
j <- forall s. Parser s -> DOMPos -> DOMNode -> ST s DOMID
insertNewNode Parser s
p DOMPos
pos DOMNode
domDefaultText
forall s. Parser s -> DOMID -> Word8 -> ST s ()
textMapAppend Parser s
p DOMID
j Word8
w
Just DOMID
x ->
case DOM -> DOMID -> Maybe DOMNode
domGetNode DOM
d DOMID
x of
Just n :: DOMNode
n@DOMText{DOMID
BS
domTextData :: DOMNode -> BS
domTextParent :: DOMNode -> DOMID
domTextID :: DOMNode -> DOMID
domTextData :: BS
domTextParent :: DOMID
domTextID :: DOMID
..} ->
forall s. Parser s -> DOMID -> Word8 -> ST s ()
textMapAppend Parser s
p DOMID
domTextID Word8
w
Just DOMNode
n -> do
DOMID
j <- forall s. Parser s -> DOMPos -> DOMNode -> ST s DOMID
insertNewNode Parser s
p DOMPos
pos DOMNode
domDefaultText
forall s. Parser s -> DOMID -> Word8 -> ST s ()
textMapAppend Parser s
p DOMID
j Word8
w
Maybe DOMNode
Nothing ->
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p forall a. Maybe a
Nothing forall a b. (a -> b) -> a -> b
$ BS
"insert char bad id: " forall a. Semigroup a => a -> a -> a
<> String -> BS
bcPack (forall a. Show a => a -> String
show DOMID
x)
textMapAppend :: Parser s -> DOMID -> Word8 -> ST s ()
textMapAppend :: forall s. Parser s -> DOMID -> Word8 -> ST s ()
textMapAppend Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} DOMID
i Word8
w = do
IntMap (STRef s (Buffer s))
m <- forall s a. STRef s a -> ST s a
rref STRef s (IntMap (STRef s (Buffer s)))
parserTextMap
case forall a. DOMID -> IntMap a -> Maybe a
IntMap.lookup DOMID
i IntMap (STRef s (Buffer s))
m of
Just STRef s (Buffer s)
b ->
forall s. Word8 -> STRef s (Buffer s) -> ST s ()
bufferAppend Word8
w STRef s (Buffer s)
b
Maybe (STRef s (Buffer s))
Nothing -> do
STRef s (Buffer s)
b <- forall s. ST s (STRef s (Buffer s))
bufferNew
forall s. Word8 -> STRef s (Buffer s) -> ST s ()
bufferAppend Word8
w STRef s (Buffer s)
b
forall s a. STRef s a -> a -> ST s ()
wref STRef s (IntMap (STRef s (Buffer s)))
parserTextMap forall a b. (a -> b) -> a -> b
$ forall a. DOMID -> a -> IntMap a -> IntMap a
IntMap.insert DOMID
i STRef s (Buffer s)
b IntMap (STRef s (Buffer s))
m
textMapLookup :: Parser s -> DOMID -> ST s BS
textMapLookup :: forall s. Parser s -> DOMID -> ST s BS
textMapLookup Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} DOMID
i = do
IntMap (STRef s (Buffer s))
m <- forall s a. STRef s a -> ST s a
rref STRef s (IntMap (STRef s (Buffer s)))
parserTextMap
case forall a. DOMID -> IntMap a -> Maybe a
IntMap.lookup DOMID
i IntMap (STRef s (Buffer s))
m of
Just STRef s (Buffer s)
b -> forall s. STRef s (Buffer s) -> ST s BS
bufferPack STRef s (Buffer s)
b
Maybe (STRef s (Buffer s))
Nothing -> forall (f :: * -> *) a. Applicative f => a -> f a
pure BS
bsEmpty
textMapDOM :: Parser s -> ST s DOM
textMapDOM :: forall s. Parser s -> ST s DOM
textMapDOM p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = do
DOM{DOMID
DOMMap
domNextID :: DOM -> DOMID
domNodes :: DOM -> DOMMap
domNextID :: DOMID
domNodes :: DOMMap
..} <- forall s. Parser s -> ST s DOM
getDOM Parser s
p
IntMap BS
m <- forall s a. STRef s a -> ST s a
rref STRef s (IntMap (STRef s (Buffer s)))
parserTextMap forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM forall s. STRef s (Buffer s) -> ST s BS
bufferPack
let f :: DOMID -> BS
f DOMID
x = forall a. a -> DOMID -> IntMap a -> a
IntMap.findWithDefault BS
bsEmpty DOMID
x IntMap BS
m
a :: DOMMap
a = forall a b c. (a -> b -> c) -> b -> a -> c
flip forall a b. (DOMID -> a -> b) -> IntMap a -> IntMap b
IntMap.mapWithKey DOMMap
domNodes forall a b. (a -> b) -> a -> b
$ \DOMID
i DOMNode
n ->
case DOMNode
n of
DOMText{} -> DOMNode
n { domTextData :: BS
domTextData = DOMID -> BS
f DOMID
i }
DOMNode
_otherwise -> DOMNode
n
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ DOMMap -> DOMID -> DOM
DOM DOMMap
a DOMID
domNextID
withStartToken :: (Token -> ST s ()) -> Token -> ST s ()
withStartToken :: forall s. (Token -> ST s ()) -> Token -> ST s ()
withStartToken Token -> ST s ()
f = \case
t :: Token
t@TStart {} -> Token -> ST s ()
f Token
t
Token
_otherwise -> forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
withCharToken :: (Word8 -> ST s ()) -> Token -> ST s ()
withCharToken :: forall s. (Word8 -> ST s ()) -> Token -> ST s ()
withCharToken Word8 -> ST s ()
f = \case
TChar Word8
w -> Word8 -> ST s ()
f Word8
w
Token
_otherwise -> forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
parserLexerUpdate :: Parser s -> (Lexer s -> ST s ()) -> ST s ()
parserLexerUpdate :: forall s. Parser s -> (Lexer s -> ST s ()) -> ST s ()
parserLexerUpdate Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Lexer s -> ST s ()
f = forall s a. STRef s a -> ST s a
rref STRef s (Lexer s)
parserLexer forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Lexer s -> ST s ()
f
parserSkipNextLF :: Parser s -> ST s ()
parserSkipNextLF :: forall s. Parser s -> ST s ()
parserSkipNextLF Parser s
p = forall s. Parser s -> (Lexer s -> ST s ()) -> ST s ()
parserLexerUpdate Parser s
p forall s. Lexer s -> ST s ()
lexerSkipNextLF
parserSetRCDATA :: Parser s -> ST s ()
parserSetRCDATA :: forall s. Parser s -> ST s ()
parserSetRCDATA Parser s
p = forall s. Parser s -> (Lexer s -> ST s ()) -> ST s ()
parserLexerUpdate Parser s
p forall s. Lexer s -> ST s ()
lexerSetRCDATA
parserSetRAWTEXT :: Parser s -> ST s ()
parserSetRAWTEXT :: forall s. Parser s -> ST s ()
parserSetRAWTEXT Parser s
p = forall s. Parser s -> (Lexer s -> ST s ()) -> ST s ()
parserLexerUpdate Parser s
p forall s. Lexer s -> ST s ()
lexerSetRAWTEXT
parserSetPLAINTEXT :: Parser s -> ST s ()
parserSetPLAINTEXT :: forall s. Parser s -> ST s ()
parserSetPLAINTEXT Parser s
p = forall s. Parser s -> (Lexer s -> ST s ()) -> ST s ()
parserLexerUpdate Parser s
p forall s. Lexer s -> ST s ()
lexerSetPLAINTEXT
parserSetScriptData :: Parser s -> ST s ()
parserSetScriptData :: forall s. Parser s -> ST s ()
parserSetScriptData Parser s
p = forall s. Parser s -> (Lexer s -> ST s ()) -> ST s ()
parserLexerUpdate Parser s
p forall s. Lexer s -> ST s ()
lexerSetScriptData
insertElementRCDATA :: Parser s -> Token -> ST s ()
insertElementRCDATA :: forall s. Parser s -> Token -> ST s ()
insertElementRCDATA Parser s
p Token
t = do
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ST s ()
parserSetRCDATA Parser s
p
forall s. Parser s -> ST s ()
saveMode Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeText
insertElementRAWTEXT :: Parser s -> Token -> ST s ()
insertElementRAWTEXT :: forall s. Parser s -> Token -> ST s ()
insertElementRAWTEXT Parser s
p Token
t = do
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ST s ()
parserSetRAWTEXT Parser s
p
forall s. Parser s -> ST s ()
saveMode Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeText
generateImpliedEndTags :: Parser s -> ST s ()
generateImpliedEndTags :: forall s. Parser s -> ST s ()
generateImpliedEndTags Parser s
p = forall s. Parser s -> BS -> ST s ()
generateImpliedEndTagsExcept Parser s
p BS
bsEmpty
generateImpliedEndTagsExcept :: Parser s -> BS -> ST s ()
generateImpliedEndTagsExcept :: forall s. Parser s -> BS -> ST s ()
generateImpliedEndTagsExcept Parser s
p BS
x =
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopWhile Parser s
p forall a b. (a -> b) -> a -> b
$ [BS] -> DOMNode -> Bool
elementNameIn forall a b. (a -> b) -> a -> b
$
forall a. (a -> Bool) -> [a] -> [a]
filter (forall a. Eq a => a -> a -> Bool
/=BS
x) [ BS
"dd", BS
"dt", BS
"li", BS
"menuitem", BS
"optgroup",
BS
"option", BS
"p", BS
"rb", BS
"rp", BS
"rt", BS
"rtc" ]
generateImpliedEndTagsThoroughly :: Parser s -> ST s ()
generateImpliedEndTagsThoroughly :: forall s. Parser s -> ST s ()
generateImpliedEndTagsThoroughly Parser s
p =
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopWhile Parser s
p forall a b. (a -> b) -> a -> b
$ [BS] -> DOMNode -> Bool
elementNameIn
[ BS
"caption", BS
"colgroup", BS
"dd", BS
"dt", BS
"li", BS
"optgroup",
BS
"option", BS
"p", BS
"rb", BS
"rp", BS
"rt", BS
"rtc",
BS
"tbody", BS
"td", BS
"tfoot", BS
"th", BS
"thead", BS
"tr" ]
resetInsertionMode :: Parser s -> ST s ()
resetInsertionMode :: forall s. Parser s -> ST s ()
resetInsertionMode p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} =
forall s. Parser s -> ST s [DOMNode]
elementStackNodes Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= [DOMNode] -> ST s ()
f
where
f :: [DOMNode] -> ST s ()
f [] = forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
f (DOMNode
x:[DOMNode]
xs) = do
DOMNode
x' <- ST s DOMNode
node
case (DOMNode -> BS
domNodeElementName DOMNode
x', Bool
lastNode) of
(BS
"select", Bool
_) -> [DOMNode] -> ST s ()
g (DOMNode
x'forall a. a -> [a] -> [a]
:[DOMNode]
xs)
(BS
"td", Bool
False) -> forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInCell
(BS
"th", Bool
False) -> forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInCell
(BS
"tr", Bool
_) -> forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInRow
(BS
"tbody", Bool
_) -> forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTableBody
(BS
"thead", Bool
_) -> forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTableBody
(BS
"tfoot", Bool
_) -> forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTableBody
(BS
"caption", Bool
_) -> forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInCaption
(BS
"colgroup", Bool
_) -> forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInColumnGroup
(BS
"table", Bool
_) -> forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTable
(BS
"head", Bool
False) -> forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInHead
(BS
"body", Bool
_) -> forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInBody
(BS
"frameset", Bool
_) -> forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInFrameset
(BS
"template", Bool
_) -> forall s. Parser s -> ST s (Maybe ParserMode)
templateModeCurrent Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Just ParserMode
m -> forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
m
Maybe ParserMode
Nothing -> forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
(BS
"html", Bool
_) -> forall s. Parser s -> ST s (Maybe DOMID)
getHeadID Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Maybe DOMID
Nothing -> forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeBeforeHead
Just DOMID
_ -> forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeAfterHead
(BS
_, Bool
True) -> forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInBody
(BS
_, Bool
False) -> [DOMNode] -> ST s ()
f [DOMNode]
xs
where
lastNode :: Bool
lastNode = forall (t :: * -> *) a. Foldable t => t a -> DOMID
length [DOMNode]
xs forall a. Eq a => a -> a -> Bool
== DOMID
0
node :: ST s DOMNode
node = do
Bool
a <- forall s a. STRef s a -> ST s a
rref STRef s Bool
parserFragmentMode
Maybe DOMID
c <- forall s a. STRef s a -> ST s a
rref STRef s (Maybe DOMID)
parserContextElement
Maybe DOMNode
n <- forall s. Parser s -> DOMID -> ST s (Maybe DOMNode)
getNode Parser s
p forall a b. (a -> b) -> a -> b
$ forall a. HasCallStack => Maybe a -> a
fromJust Maybe DOMID
c
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$
if Bool
lastNode Bool -> Bool -> Bool
&& Bool
a Bool -> Bool -> Bool
&& forall a. Maybe a -> Bool
isJust Maybe DOMID
c
then forall a. HasCallStack => Maybe a -> a
fromJust forall a b. (a -> b) -> a -> b
$ Maybe DOMNode
n
else DOMNode
x
g :: [DOMNode] -> ST s ()
g (DOMNode
x:[]) =
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInSelect
g (DOMNode
x:DOMNode
y:[DOMNode]
ys) =
case DOMNode -> BS
domNodeElementName DOMNode
y of
BS
"template" -> forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInSelect
BS
"table" -> forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInSelectInTable
BS
_otherwise -> [DOMNode] -> ST s ()
g (DOMNode
yforall a. a -> [a] -> [a]
:[DOMNode]
ys)
closeElementP :: Parser s -> ST s ()
closeElementP :: forall s. Parser s -> ST s ()
closeElementP Parser s
p = do
let t :: DOMType
t = BS -> DOMType
domMakeTypeHTML BS
"p"
forall s. Parser s -> BS -> ST s ()
generateImpliedEndTagsExcept Parser s
p BS
"p"
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
t) forall a b. (a -> b) -> a -> b
$
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p forall a. Maybe a
Nothing BS
"current node not p when closing p element"
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
t
data ParserAdoptionAgency s = ParserAdoptionAgency
{ forall s. ParserAdoptionAgency s -> BS
aaSubject :: BS
, forall s. ParserAdoptionAgency s -> DOMID
aaOuterLoopCount :: Int
, forall s. ParserAdoptionAgency s -> DOMID
aaInnerLoopCount :: Int
, forall s. ParserAdoptionAgency s -> DOMID
aaNode :: DOMID
, forall s. ParserAdoptionAgency s -> DOMID
aaLastNode :: DOMID
, forall s. ParserAdoptionAgency s -> DOMID
aaNextNode :: DOMID
, forall s. ParserAdoptionAgency s -> DOMID
aaFormattingElement :: DOMID
, forall s. ParserAdoptionAgency s -> DOMID
aaCommonAncestor :: DOMID
, forall s. ParserAdoptionAgency s -> DOMID
aaFurthestBlock :: DOMID
, forall s. ParserAdoptionAgency s -> Maybe DOMID
aaBookmark :: (Maybe DOMID)
, forall s. ParserAdoptionAgency s -> ST s ()
aaAnyOtherEndTag :: ST s ()
}
defaultAA :: ST s (ParserAdoptionAgency s)
defaultAA :: forall s. ST s (ParserAdoptionAgency s)
defaultAA =
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ ParserAdoptionAgency
{ aaSubject :: BS
aaSubject = BS
bsEmpty
, aaOuterLoopCount :: DOMID
aaOuterLoopCount = DOMID
0
, aaInnerLoopCount :: DOMID
aaInnerLoopCount = DOMID
0
, aaNode :: DOMID
aaNode = DOMID
domNull
, aaLastNode :: DOMID
aaLastNode = DOMID
domNull
, aaNextNode :: DOMID
aaNextNode = DOMID
domNull
, aaFormattingElement :: DOMID
aaFormattingElement = DOMID
domNull
, aaCommonAncestor :: DOMID
aaCommonAncestor = DOMID
domNull
, aaFurthestBlock :: DOMID
aaFurthestBlock = DOMID
domNull
, aaBookmark :: Maybe DOMID
aaBookmark = forall a. Maybe a
Nothing
, aaAnyOtherEndTag :: ST s ()
aaAnyOtherEndTag = forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
}
modifyAA :: Parser s -> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
modifyAA :: forall s.
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
modifyAA Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> (a -> a) -> ST s ()
uref STRef s (ParserAdoptionAgency s)
parserAdoptionAgency
getAA :: Parser s -> ST s (ParserAdoptionAgency s)
getAA :: forall s. Parser s -> ST s (ParserAdoptionAgency s)
getAA Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> ST s a
rref STRef s (ParserAdoptionAgency s)
parserAdoptionAgency
getsAA :: Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA :: forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p ParserAdoptionAgency s -> a
f = ParserAdoptionAgency s -> a
f forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s (ParserAdoptionAgency s)
getAA Parser s
p
adoptionAgencyRun :: Parser s -> BS -> ST s () -> ST s ()
adoptionAgencyRun :: forall s. Parser s -> BS -> ST s () -> ST s ()
adoptionAgencyRun p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} BS
subject ST s ()
anyOther = do
Bool
a <- forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p forall a b. (a -> b) -> a -> b
$ BS -> DOMType
domMakeTypeHTML BS
subject
Bool
b <- forall s. Parser s -> ST s (Maybe DOMID)
currentNodeID Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Just DOMID
i -> forall (m :: * -> *). Functor m => m Bool -> m Bool
notM forall a b. (a -> b) -> a -> b
$ forall s. Parser s -> DOMID -> ST s Bool
activeFormatContains Parser s
p DOMID
i
Maybe DOMID
Nothing -> forall (f :: * -> *) a. Applicative f => a -> f a
pure Bool
True
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (Bool
a Bool -> Bool -> Bool
&& Bool
b) forall a b. (a -> b) -> a -> b
$ do
ParserAdoptionAgency s
aa <- forall s. ST s (ParserAdoptionAgency s)
defaultAA
forall s.
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
modifyAA Parser s
p forall a b. (a -> b) -> a -> b
$ forall a b. a -> b -> a
const ParserAdoptionAgency s
aa
{ aaSubject :: BS
aaSubject = BS
subject
, aaAnyOtherEndTag :: ST s ()
aaAnyOtherEndTag = ST s ()
anyOther
}
forall s. Parser s -> ST s ()
adoptionAgencyOuterLoop Parser s
p
adoptionAgencyOuterLoop :: Parser s -> ST s ()
adoptionAgencyOuterLoop :: forall s. Parser s -> ST s ()
adoptionAgencyOuterLoop Parser s
p = do
DOMID
i <- forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p forall s. ParserAdoptionAgency s -> DOMID
aaOuterLoopCount
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (DOMID
i forall a. Ord a => a -> a -> Bool
< DOMID
8) forall a b. (a -> b) -> a -> b
$ do
forall s.
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
modifyAA Parser s
p forall a b. (a -> b) -> a -> b
$ \ParserAdoptionAgency s
a -> ParserAdoptionAgency s
a { aaOuterLoopCount :: DOMID
aaOuterLoopCount = forall s. ParserAdoptionAgency s -> DOMID
aaOuterLoopCount ParserAdoptionAgency s
a forall a. Num a => a -> a -> a
+ DOMID
1 }
forall (f :: * -> *) a b. Applicative f => (a -> b) -> f a -> f b
liftA forall s. ParserAdoptionAgency s -> BS
aaSubject (forall s. Parser s -> ST s (ParserAdoptionAgency s)
getAA Parser s
p) forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall s. Parser s -> BS -> ST s (Maybe ParserFormatItem)
activeFormatFindTag Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Maybe ParserFormatItem
Nothing -> do
ST s ()
doAnyOtherEndTag <- forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p forall s. ParserAdoptionAgency s -> ST s ()
aaAnyOtherEndTag
ST s ()
doAnyOtherEndTag
Just (ParserFormatElement DOMID
fe Token
t) -> do
forall s.
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
modifyAA Parser s
p forall a b. (a -> b) -> a -> b
$ \ParserAdoptionAgency s
a -> ParserAdoptionAgency s
a { aaFormattingElement :: DOMID
aaFormattingElement = DOMID
fe }
DOMNode
x <- forall a. HasCallStack => Maybe a -> a
fromJust forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> DOMID -> ST s (Maybe DOMNode)
getNode Parser s
p DOMID
fe
let name :: BS
name = DOMNode -> BS
domElementName DOMNode
x
(forall s. Parser s -> (DOMNode -> Bool) -> ST s Bool
elementStackAny Parser s
p (forall a. Eq a => a -> a -> Bool
(==) DOMID
fe forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOMNode -> DOMID
domNodeID)) forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False -> do
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p forall a. Maybe a
Nothing forall a b. (a -> b) -> a -> b
$
BS
"element stack missing " forall a. Semigroup a => a -> a -> a
<> BS
name
forall a. Semigroup a => a -> a -> a
<> BS
"(ID:" forall a. Semigroup a => a -> a -> a
<> String -> BS
bcPack (forall a. Show a => a -> String
show DOMID
fe) forall a. Semigroup a => a -> a -> a
<> BS
") during adoption"
forall s. Parser s -> DOMID -> ST s ()
activeFormatRemove Parser s
p DOMID
fe
Bool
True ->
(forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p forall a b. (a -> b) -> a -> b
$ DOMNode -> DOMType
domNodeType DOMNode
x) forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p forall a. Maybe a
Nothing forall a b. (a -> b) -> a -> b
$
BS
"element " forall a. Semigroup a => a -> a -> a
<> BS
name forall a. Semigroup a => a -> a -> a
<> BS
" not in scope during adoption"
Bool
True -> do
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall b a. b -> (a -> b) -> Maybe a -> b
maybe Bool
False (forall a. Eq a => a -> a -> Bool
==DOMID
fe) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s (Maybe DOMID)
currentNodeID Parser s
p) forall a b. (a -> b) -> a -> b
$
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p forall a. Maybe a
Nothing forall a b. (a -> b) -> a -> b
$ BS
"element " forall a. Semigroup a => a -> a -> a
<> BS
name
forall a. Semigroup a => a -> a -> a
<> BS
" is not the current ID during adoption"
DOM
d <- forall s. Parser s -> ST s DOM
getDOM Parser s
p
[DOMID] -> Maybe DOMID
f <- forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a
find forall a b. (a -> b) -> a -> b
$ DOMType -> Bool
elementIsSpecial
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOMNode -> DOMType
domNodeType forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. HasCallStack => Maybe a -> a
fromJust forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOM -> DOMID -> Maybe DOMNode
domGetNode DOM
d
forall (f :: * -> *) a b. Applicative f => (a -> b) -> f a -> f b
liftA ([DOMID] -> Maybe DOMID
f forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. [a] -> [a]
reverse forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. (a -> Bool) -> [a] -> [a]
takeWhile (forall a. Eq a => a -> a -> Bool
/=DOMID
fe)) (forall s. Parser s -> ST s [DOMID]
elementStack Parser s
p) forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Maybe DOMID
Nothing -> do
forall s. Parser s -> DOMID -> ST s ()
elementStackPopUntilID Parser s
p DOMID
fe
forall s. Parser s -> DOMID -> ST s ()
activeFormatRemove Parser s
p DOMID
fe
Just DOMID
fb -> do
DOMID
ca <- forall a. HasCallStack => Maybe a -> a
fromJust forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> DOMID -> ST s (Maybe DOMID)
elementStackSucc Parser s
p DOMID
fe
Maybe DOMID
bm <- forall s. Parser s -> DOMID -> ST s (Maybe DOMID)
activeFormatSucc Parser s
p DOMID
fe
forall s.
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
modifyAA Parser s
p forall a b. (a -> b) -> a -> b
$ \ParserAdoptionAgency s
a -> ParserAdoptionAgency s
a
{ aaNode :: DOMID
aaNode = DOMID
fb
, aaLastNode :: DOMID
aaLastNode = DOMID
fb
, aaCommonAncestor :: DOMID
aaCommonAncestor = DOMID
ca
, aaFurthestBlock :: DOMID
aaFurthestBlock = DOMID
fb
, aaBookmark :: Maybe DOMID
aaBookmark = Maybe DOMID
bm
}
forall s. Parser s -> ST s ()
adoptionAgencyInnerLoop Parser s
p
adoptionAgencyInnerLoop :: Parser s -> ST s ()
adoptionAgencyInnerLoop :: forall s. Parser s -> ST s ()
adoptionAgencyInnerLoop Parser s
p = do
forall s.
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
modifyAA Parser s
p forall a b. (a -> b) -> a -> b
$ \ParserAdoptionAgency s
a -> ParserAdoptionAgency s
a { aaInnerLoopCount :: DOMID
aaInnerLoopCount = forall s. ParserAdoptionAgency s -> DOMID
aaInnerLoopCount ParserAdoptionAgency s
a forall a. Num a => a -> a -> a
+ DOMID
1 }
DOMID
n <- forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p forall s. ParserAdoptionAgency s -> DOMID
aaNode
DOMID
m <- forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p forall s. ParserAdoptionAgency s -> DOMID
aaNextNode
DOMID
node <- forall b a. b -> (a -> b) -> Maybe a -> b
maybe DOMID
m forall a. a -> a
id forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> DOMID -> ST s (Maybe DOMID)
elementStackSucc Parser s
p DOMID
n
DOMID
f <- forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p forall s. ParserAdoptionAgency s -> DOMID
aaFormattingElement
if DOMID
node forall a. Eq a => a -> a -> Bool
== DOMID
f
then forall s. Parser s -> ST s ()
adoptionAgencyPostLoop Parser s
p
else do
DOMID
ic <- forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p forall s. ParserAdoptionAgency s -> DOMID
aaInnerLoopCount
Bool
ac <- forall s. Parser s -> DOMID -> ST s Bool
activeFormatContains Parser s
p DOMID
node
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (DOMID
ic forall a. Ord a => a -> a -> Bool
> DOMID
3 Bool -> Bool -> Bool
&& Bool
ac) forall a b. (a -> b) -> a -> b
$ forall s. Parser s -> DOMID -> ST s ()
activeFormatRemove Parser s
p DOMID
node
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall s. Parser s -> DOMID -> ST s Bool
activeFormatContains Parser s
p DOMID
node) forall a b. (a -> b) -> a -> b
$ do
DOMID
m <- forall a. HasCallStack => Maybe a -> a
fromJust forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> DOMID -> ST s (Maybe DOMID)
elementStackSucc Parser s
p DOMID
node
forall s.
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
modifyAA Parser s
p forall a b. (a -> b) -> a -> b
$ \ParserAdoptionAgency s
a -> ParserAdoptionAgency s
a { aaNextNode :: DOMID
aaNextNode = DOMID
m }
forall s. Parser s -> DOMID -> ST s ()
elementStackRemove Parser s
p DOMID
node
forall s. Parser s -> ST s ()
adoptionAgencyInnerLoop Parser s
p
Token
t <- forall a. HasCallStack => Maybe a -> a
fromJust forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> DOMID -> ST s (Maybe Token)
activeFormatFindToken Parser s
p DOMID
node
DOMID
e <- forall s. Parser s -> Token -> HTMLNamespace -> ST s DOMID
createElementForToken Parser s
p Token
t HTMLNamespace
HTMLNamespaceHTML
DOMID
c <- forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p forall s. ParserAdoptionAgency s -> DOMID
aaCommonAncestor
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p forall a b. (a -> b) -> a -> b
$ DOMID -> DOMID -> DOM -> DOM
domAppend DOMID
c DOMID
e
forall s. Parser s -> DOMID -> DOMID -> ST s ()
activeFormatReplace Parser s
p DOMID
node DOMID
e
forall s. Parser s -> DOMID -> DOMID -> ST s ()
elementStackReplace Parser s
p DOMID
node DOMID
e
forall s.
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
modifyAA Parser s
p forall a b. (a -> b) -> a -> b
$ \ParserAdoptionAgency s
a -> ParserAdoptionAgency s
a { aaNode :: DOMID
aaNode = DOMID
e }
DOMID
x <- forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p forall s. ParserAdoptionAgency s -> DOMID
aaLastNode
DOMID
b <- forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p forall s. ParserAdoptionAgency s -> DOMID
aaFurthestBlock
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (DOMID
x forall a. Eq a => a -> a -> Bool
== DOMID
b) forall a b. (a -> b) -> a -> b
$ do
Maybe DOMID
bm <- forall s. Parser s -> DOMID -> ST s (Maybe DOMID)
activeFormatSucc Parser s
p DOMID
e
forall s.
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
modifyAA Parser s
p forall a b. (a -> b) -> a -> b
$ \ParserAdoptionAgency s
a -> ParserAdoptionAgency s
a { aaBookmark :: Maybe DOMID
aaBookmark = Maybe DOMID
bm }
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p forall a b. (a -> b) -> a -> b
$ DOMID -> DOMID -> DOM -> DOM
domMove DOMID
x DOMID
e
forall s.
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
modifyAA Parser s
p forall a b. (a -> b) -> a -> b
$ \ParserAdoptionAgency s
a -> ParserAdoptionAgency s
a { aaLastNode :: DOMID
aaLastNode = DOMID
e }
forall s. Parser s -> ST s ()
adoptionAgencyInnerLoop Parser s
p
adoptionAgencyPostLoop :: Parser s -> ST s ()
adoptionAgencyPostLoop :: forall s. Parser s -> ST s ()
adoptionAgencyPostLoop Parser s
p = do
DOMID
c <- forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p forall s. ParserAdoptionAgency s -> DOMID
aaCommonAncestor
DOMID
n <- forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p forall s. ParserAdoptionAgency s -> DOMID
aaLastNode
DOMPos
i <- forall s. Parser s -> Maybe DOMID -> ST s DOMPos
appropriateInsertionLocation Parser s
p forall a b. (a -> b) -> a -> b
$ forall a. a -> Maybe a
Just DOMID
c
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p forall a b. (a -> b) -> a -> b
$ DOMID -> DOMID -> DOM -> DOM
domMove DOMID
n forall a b. (a -> b) -> a -> b
$ DOMPos -> DOMID
domPosParent DOMPos
i
DOMID
f <- forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p forall s. ParserAdoptionAgency s -> DOMID
aaFormattingElement
Token
t <- forall a. HasCallStack => Maybe a -> a
fromJust forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> DOMID -> ST s (Maybe Token)
activeFormatFindToken Parser s
p DOMID
f
DOMID
e <- forall s. Parser s -> Token -> HTMLNamespace -> ST s DOMID
createElementForToken Parser s
p Token
t HTMLNamespace
HTMLNamespaceHTML
DOMID
b <- forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p forall s. ParserAdoptionAgency s -> DOMID
aaFurthestBlock
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p forall a b. (a -> b) -> a -> b
$ DOMID -> DOMID -> DOM -> DOM
domMoveChildren DOMID
b DOMID
e
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p forall a b. (a -> b) -> a -> b
$ DOMID -> DOMID -> DOM -> DOM
domAppend DOMID
b DOMID
e
forall s. Parser s -> DOMID -> ST s ()
activeFormatRemove Parser s
p DOMID
f
forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p forall s. ParserAdoptionAgency s -> Maybe DOMID
aaBookmark forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall s. Parser s -> DOMID -> Token -> Maybe DOMID -> ST s ()
activeFormatInsertElement Parser s
p DOMID
e Token
t
forall s. Parser s -> DOMID -> ST s ()
elementStackRemove Parser s
p DOMID
f
forall s. Parser s -> DOMID -> DOMID -> ST s ()
elementStackInsertBefore Parser s
p DOMID
b DOMID
e
forall s. Parser s -> ST s ()
adoptionAgencyOuterLoop Parser s
p
pendingTableCharInit :: Parser s -> ST s ()
pendingTableCharInit :: forall s. Parser s -> ST s ()
pendingTableCharInit Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> a -> ST s ()
wref STRef s [Token]
parserTableChars []
pendingTableCharAppend :: Parser s -> Token -> ST s ()
pendingTableCharAppend :: forall s. Parser s -> Token -> ST s ()
pendingTableCharAppend Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t = forall s a. STRef s a -> (a -> a) -> ST s ()
uref STRef s [Token]
parserTableChars (forall a. Semigroup a => a -> a -> a
<>[Token
t])
pendingTableChars :: Parser s -> ST s [Token]
pendingTableChars :: forall s. Parser s -> ST s [Token]
pendingTableChars Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} = forall s a. STRef s a -> ST s a
rref STRef s [Token]
parserTableChars
doctypeTokenCheck :: Parser s -> Token -> ST s ()
doctypeTokenCheck :: forall s. Parser s -> Token -> ST s ()
doctypeTokenCheck parser :: Parser s
parser@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} t :: Token
t@(TDoctype BS
n Bool
q Maybe BS
p Maybe BS
s) =
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (BS
n forall a. Eq a => a -> a -> Bool
/= BS
"html"
Bool -> Bool -> Bool
|| Maybe BS
p forall a. Eq a => a -> a -> Bool
/= forall a. Maybe a
Nothing
Bool -> Bool -> Bool
|| Maybe BS
s forall a. Eq a => a -> a -> Bool
/= forall a. Maybe a
Nothing Bool -> Bool -> Bool
&& Maybe BS
s forall a. Eq a => a -> a -> Bool
/= forall a. a -> Maybe a
Just BS
"about:legacy-compat") forall a b. (a -> b) -> a -> b
$
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
parser (forall a. a -> Maybe a
Just Token
t) BS
"doctype error"
tokenQuirks :: Token -> Bool
tokenQuirks :: Token -> Bool
tokenQuirks (TDoctype BS
n Bool
True Maybe BS
p Maybe BS
s) = Bool
True
tokenQuirks (TDoctype BS
n Bool
False Maybe BS
p Maybe BS
s) =
forall (t :: * -> *). Foldable t => t Bool -> Bool
or
[ BS
n forall a. Eq a => a -> a -> Bool
/= BS
"html"
, Maybe BS -> BS -> Bool
idMatch Maybe BS
p BS
"-//W3O//DTD W3 HTML Strict 3.0//EN//"
, Maybe BS -> BS -> Bool
idMatch Maybe BS
p BS
"-/W3C/DTD HTML 4.0 Transitional/EN"
, Maybe BS -> BS -> Bool
idMatch Maybe BS
p BS
"HTML"
, Maybe BS -> BS -> Bool
idMatch Maybe BS
s BS
"http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"
, Maybe BS -> [BS] -> Bool
anyPrefix Maybe BS
p [BS]
publicIdPrefix
, forall (t :: * -> *). Foldable t => t Bool -> Bool
and
[ Maybe BS
s forall a. Eq a => a -> a -> Bool
== forall a. Maybe a
Nothing
, Maybe BS -> [BS] -> Bool
anyPrefix Maybe BS
p
[ BS
"-//W3C//DTD HTML 4.01 Frameset//"
, BS
"-//W3C//DTD HTML 4.01 Transitional//"
]
]
]
publicIdPrefix :: [BS]
publicIdPrefix :: [BS]
publicIdPrefix =
[ BS
"+//Silmaril//dtd html Pro v0r11 19970101//"
, BS
"-//AS//DTD HTML 3.0 asWedit + extensions//"
, BS
"-//AdvaSoft Ltd//DTD HTML 3.0 asWedit + extensions//"
, BS
"-//IETF//DTD HTML 2.0 Level 1//"
, BS
"-//IETF//DTD HTML 2.0 Level 2//"
, BS
"-//IETF//DTD HTML 2.0 Strict Level 1//"
, BS
"-//IETF//DTD HTML 2.0 Strict Level 2//"
, BS
"-//IETF//DTD HTML 2.0 Strict//"
, BS
"-//IETF//DTD HTML 2.0//"
, BS
"-//IETF//DTD HTML 2.1E//"
, BS
"-//IETF//DTD HTML 3.0//"
, BS
"-//IETF//DTD HTML 3.2 Final//"
, BS
"-//IETF//DTD HTML 3.2//"
, BS
"-//IETF//DTD HTML 3//"
, BS
"-//IETF//DTD HTML Level 0//"
, BS
"-//IETF//DTD HTML Level 1//"
, BS
"-//IETF//DTD HTML Level 2//"
, BS
"-//IETF//DTD HTML Level 3//"
, BS
"-//IETF//DTD HTML Strict Level 0//"
, BS
"-//IETF//DTD HTML Strict Level 1//"
, BS
"-//IETF//DTD HTML Strict Level 2//"
, BS
"-//IETF//DTD HTML Strict Level 3//"
, BS
"-//IETF//DTD HTML Strict//"
, BS
"-//IETF//DTD HTML//"
, BS
"-//Metrius//DTD Metrius Presentational//"
, BS
"-//Microsoft//DTD Internet Explorer 2.0 HTML Strict//"
, BS
"-//Microsoft//DTD Internet Explorer 2.0 HTML//"
, BS
"-//Microsoft//DTD Internet Explorer 2.0 Tables//"
, BS
"-//Microsoft//DTD Internet Explorer 3.0 HTML Strict//"
, BS
"-//Microsoft//DTD Internet Explorer 3.0 HTML//"
, BS
"-//Microsoft//DTD Internet Explorer 3.0 Tables//"
, BS
"-//Netscape Comm. Corp.//DTD HTML//"
, BS
"-//Netscape Comm. Corp.//DTD Strict HTML//"
, BS
"-//O'Reilly and Associates//DTD HTML 2.0//"
, BS
"-//O'Reilly and Associates//DTD HTML Extended 1.0//"
, BS
"-//O'Reilly and Associates//DTD HTML Extended Relaxed 1.0//"
, BS
"-//SQ//DTD HTML 2.0 HoTMetaL + extensions//"
, BS
"-//SoftQuad Software//DTD HoTMetaL PRO 6.0::19990601::extensions to HTML 4.0//"
, BS
"-//SoftQuad//DTD HoTMetaL PRO 4.0::19971010::extensions to HTML 4.0//"
, BS
"-//Spyglass//DTD HTML 2.0 Extended//"
, BS
"-//Sun Microsystems Corp.//DTD HotJava HTML//"
, BS
"-//Sun Microsystems Corp.//DTD HotJava Strict HTML//"
, BS
"-//W3C//DTD HTML 3 1995-03-24//"
, BS
"-//W3C//DTD HTML 3.2 Draft//"
, BS
"-//W3C//DTD HTML 3.2 Final//"
, BS
"-//W3C//DTD HTML 3.2//"
, BS
"-//W3C//DTD HTML 3.2S Draft//"
, BS
"-//W3C//DTD HTML 4.0 Frameset//"
, BS
"-//W3C//DTD HTML 4.0 Transitional//"
, BS
"-//W3C//DTD HTML Experimental 19960712//"
, BS
"-//W3C//DTD HTML Experimental 970421//"
, BS
"-//W3C//DTD W3 HTML//"
, BS
"-//W3O//DTD W3 HTML 3.0//"
, BS
"-//WebTechs//DTD Mozilla HTML 2.0//"
, BS
"-//WebTechs//DTD Mozilla HTML//"
]
tokenLimitedQuirks :: Token -> Bool
tokenLimitedQuirks :: Token -> Bool
tokenLimitedQuirks TDoctype {Bool
Maybe BS
BS
tDoctypeSystem :: Maybe BS
tDoctypePublic :: Maybe BS
tDoctypeQuirks :: Bool
tDoctypeName :: BS
tDoctypeSystem :: Token -> Maybe BS
tDoctypePublic :: Token -> Maybe BS
tDoctypeQuirks :: Token -> Bool
tDoctypeName :: Token -> BS
..} =
forall (t :: * -> *). Foldable t => t Bool -> Bool
or
[ Maybe BS -> [BS] -> Bool
anyPrefix Maybe BS
tDoctypePublic
[ BS
"-//W3C//DTD XHTML 1.0 Frameset//"
, BS
"-//W3C//DTD XHTML 1.0 Transitional//"
]
, forall (t :: * -> *). Foldable t => t Bool -> Bool
and
[ forall a. Maybe a -> Bool
isJust Maybe BS
tDoctypeSystem
, Maybe BS -> [BS] -> Bool
anyPrefix Maybe BS
tDoctypePublic
[ BS
"-//W3C//DTD HTML 4.01 Frameset//"
, BS
"-//W3C//DTD HTML 4.01 Transitional//"
]
]
]
idMatch :: Maybe BS -> BS -> Bool
idMatch :: Maybe BS -> BS -> Bool
idMatch (Just BS
x) BS
y = BS -> BS
bsLower BS
x forall a. Eq a => a -> a -> Bool
== BS -> BS
bsLower BS
y
idMatch Maybe BS
Nothing BS
y = Bool
False
anyPrefix :: Maybe BS -> [BS] -> Bool
anyPrefix :: Maybe BS -> [BS] -> Bool
anyPrefix (Just BS
x) [BS]
ys = forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any (\BS
y -> BS
y BS -> BS -> Bool
`bsPrefixCI` BS
x) [BS]
ys
anyPrefix Maybe BS
Nothing [BS]
ys = Bool
False
doModeInitial :: Parser s -> Token -> ST s ()
doModeInitial :: forall s. Parser s -> Token -> ST s ()
doModeInitial p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TChar {Word8
tCharData :: Word8
tCharData :: Token -> Word8
..} | Word8 -> Bool
chrWhitespace Word8
tCharData -> do
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
TComment {} -> do
forall s. Parser s -> Token -> ST s ()
insertDocComment Parser s
p Token
t
TDoctype {} -> do
forall s. Parser s -> Token -> ST s ()
doctypeTokenCheck Parser s
p Token
t
forall s. Parser s -> Token -> ST s DOMNode
doctypeMake Parser s
p Token
t forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall s. Parser s -> DOMNode -> ST s ()
insertNewDocumentNode Parser s
p
Bool
iframe <- forall s. Parser s -> ST s Bool
iframeSrcDoc Parser s
p
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Bool -> Bool
not Bool
iframe Bool -> Bool -> Bool
&& Token -> Bool
tokenQuirks Token
t) forall a b. (a -> b) -> a -> b
$ do
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p forall a b. (a -> b) -> a -> b
$ DOMQuirks -> DOM -> DOM
domQuirksSet DOMQuirks
DOMQuirksMode
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Bool -> Bool
not Bool
iframe Bool -> Bool -> Bool
&& Token -> Bool
tokenLimitedQuirks Token
t) forall a b. (a -> b) -> a -> b
$ do
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p forall a b. (a -> b) -> a -> b
$ DOMQuirks -> DOM -> DOM
domQuirksSet DOMQuirks
DOMQuirksLimited
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeBeforeHtml
Token
_otherwise -> do
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (forall (m :: * -> *). Functor m => m Bool -> m Bool
notM forall a b. (a -> b) -> a -> b
$ forall s. Parser s -> ST s Bool
iframeSrcDoc Parser s
p) forall a b. (a -> b) -> a -> b
$ do
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) BS
"initial unexpected token"
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p forall a b. (a -> b) -> a -> b
$ DOMQuirks -> DOM -> DOM
domQuirksSet DOMQuirks
DOMQuirksMode
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeBeforeHtml
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
doModeBeforeHtml :: Parser s -> Token -> ST s ()
doModeBeforeHtml :: forall s. Parser s -> Token -> ST s ()
doModeBeforeHtml p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TDoctype {} ->
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) BS
"before html doctype"
TComment {} ->
forall s. Parser s -> Token -> ST s ()
insertDocComment Parser s
p Token
t
TChar {Word8
tCharData :: Word8
tCharData :: Token -> Word8
..} | Word8 -> Bool
chrWhitespace Word8
tCharData ->
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
TStart { tStartName :: Token -> BS
tStartName = BS
"html" } -> do
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeBeforeHead
TEnd { tEndName :: Token -> BS
tEndName = BS
x }
| forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [ BS
"head", BS
"body", BS
"html", BS
"br" ] -> do
forall s. Parser s -> BS -> ST s ()
insertHtmlElementNamed Parser s
p BS
"html"
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeBeforeHead
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd {} ->
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) BS
"before html end tag"
Token
_otherwise -> do
forall s. Parser s -> BS -> ST s ()
insertHtmlElementNamed Parser s
p BS
"html"
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeBeforeHead
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
doModeBeforeHead :: Parser s -> Token -> ST s ()
doModeBeforeHead :: forall s. Parser s -> Token -> ST s ()
doModeBeforeHead p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TChar {Word8
tCharData :: Word8
tCharData :: Token -> Word8
..} | Word8 -> Bool
chrWhitespace Word8
tCharData ->
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
TComment {} ->
forall s. Parser s -> Token -> ST s ()
insertComment Parser s
p Token
t
TDoctype {} ->
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) BS
"before head doctype"
TStart { tStartName :: Token -> BS
tStartName = BS
"html" } ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"head" } -> do
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ST s ()
saveHead Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInHead
TEnd { tEndName :: Token -> BS
tEndName = BS
x }
| forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [ BS
"head", BS
"body", BS
"html", BS
"br" ] -> do
forall s. Parser s -> BS -> ST s ()
insertHtmlElementNamed Parser s
p BS
"head"
forall s. Parser s -> ST s ()
saveHead Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInHead
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd {} ->
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) BS
"before head end tag"
Token
_otherwise -> do
forall s. Parser s -> BS -> ST s ()
insertHtmlElementNamed Parser s
p BS
"head"
forall s. Parser s -> ST s ()
saveHead Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInHead
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
doModeInHead :: Parser s -> Token -> ST s ()
doModeInHead :: forall s. Parser s -> Token -> ST s ()
doModeInHead p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TChar {Word8
tCharData :: Word8
tCharData :: Token -> Word8
..} | Word8 -> Bool
chrWhitespace Word8
tCharData ->
forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p Token
t
TComment {} ->
forall s. Parser s -> Token -> ST s ()
insertComment Parser s
p Token
t
TDoctype {} ->
BS -> ST s ()
warn BS
"doctype"
TStart { tStartName :: Token -> BS
tStartName = BS
"html" } ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x }
| forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [ BS
"base", BS
"basefont", BS
"bgsound", BS
"link" ] -> do
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
"meta" } -> do
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
"title" } ->
forall s. Parser s -> Token -> ST s ()
insertElementRCDATA Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"noframes" } ->
forall s. Parser s -> Token -> ST s ()
insertElementRAWTEXT Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"style" } ->
forall s. Parser s -> Token -> ST s ()
insertElementRAWTEXT Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"noscript" } -> do
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInHeadNoscript
TStart { tStartName :: Token -> BS
tStartName = BS
"script" } -> do
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ST s ()
parserSetScriptData Parser s
p
forall s. Parser s -> ST s ()
saveMode Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeText
TEnd { tEndName :: Token -> BS
tEndName = BS
"head" } -> do
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeAfterHead
TEnd { tEndName :: Token -> BS
tEndName = BS
x }
| forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [ BS
"body", BS
"html", BS
"br" ] -> do
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeAfterHead
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"template" } -> do
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ST s ()
activeFormatAddMarker Parser s
p
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTemplate
forall s. Parser s -> ParserMode -> ST s ()
templateModePush Parser s
p ParserMode
ModeInTemplate
TEnd { tEndName :: Token -> BS
tEndName = x :: BS
x@BS
"template" } -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
x
forall s. Parser s -> ST s Bool
elementStackHasTemplate Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn BS
"template start tag missing"
Bool
True -> do
forall s. Parser s -> ST s ()
generateImpliedEndTagsThoroughly Parser s
p
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a) forall a b. (a -> b) -> a -> b
$
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p forall a. Maybe a
Nothing BS
"template not current node"
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
forall s. Parser s -> ST s ()
activeFormatClear Parser s
p
forall s. Parser s -> ST s ()
templateModePop Parser s
p
forall s. Parser s -> ST s ()
resetInsertionMode Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
"head" } ->
BS -> ST s ()
warn BS
"head"
TEnd {} ->
BS -> ST s ()
warn BS
"unexpected end tag"
Token
_otherwise -> do
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeAfterHead
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
where
warn :: BS -> ST s ()
warn BS
x = forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) forall a b. (a -> b) -> a -> b
$ BS
"in head " forall a. Semigroup a => a -> a -> a
<> BS
x
doModeInHeadNoscript :: Parser s -> Token -> ST s ()
doModeInHeadNoscript :: forall s. Parser s -> Token -> ST s ()
doModeInHeadNoscript p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TDoctype {} ->
BS -> ST s ()
warn BS
"doctype"
TStart { tStartName :: Token -> BS
tStartName = BS
"html" } ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"noscript" } -> do
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInHead
TChar {Word8
tCharData :: Word8
tCharData :: Token -> Word8
..} | Word8 -> Bool
chrWhitespace Word8
tCharData ->
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
TComment {} ->
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x }
| forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [ BS
"basefont", BS
"bgsound", BS
"link",
BS
"meta", BS
"noframes", BS
"style" ] ->
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"br" } -> do
BS -> ST s ()
warn BS
"br"
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInHead
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"head" } ->
BS -> ST s ()
warn BS
"head"
TStart { tStartName :: Token -> BS
tStartName = BS
"noscript" } ->
BS -> ST s ()
warn BS
"noscript"
TEnd {} ->
BS -> ST s ()
warn BS
"end tag"
Token
_otherwise -> do
BS -> ST s ()
warn BS
"bad token"
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInHead
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
where
warn :: BS -> ST s ()
warn BS
x = forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) forall a b. (a -> b) -> a -> b
$ BS
"in head noscript " forall a. Semigroup a => a -> a -> a
<> BS
x
doModeAfterHead :: Parser s -> Token -> ST s ()
doModeAfterHead :: forall s. Parser s -> Token -> ST s ()
doModeAfterHead p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TChar {Word8
tCharData :: Word8
tCharData :: Token -> Word8
..} | Word8 -> Bool
chrWhitespace Word8
tCharData ->
forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p Token
t
TComment {} ->
forall s. Parser s -> Token -> ST s ()
insertComment Parser s
p Token
t
TDoctype {} ->
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) BS
"after head doctype"
TStart { tStartName :: Token -> BS
tStartName = BS
"html" } ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"body" } -> do
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInBody
TStart { tStartName :: Token -> BS
tStartName = BS
"frameset" } -> do
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInFrameset
TStart { tStartName :: Token -> BS
tStartName = BS
x }
| forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[ BS
"base"
, BS
"basefont"
, BS
"bgsound"
, BS
"link"
, BS
"meta"
, BS
"noframes"
, BS
"script"
, BS
"style"
, BS
"template"
, BS
"title"
, BS
"head"
] -> do
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) BS
"after head bad start tag"
forall s. Parser s -> ST s (Maybe DOMID)
getHeadID Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Just DOMID
h -> do
forall s. Parser s -> DOMID -> ST s ()
elementStackPush Parser s
p DOMID
h
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
forall s. Parser s -> DOMID -> ST s ()
elementStackRemove Parser s
p DOMID
h
Maybe DOMID
Nothing -> do
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
TEnd { tEndName :: Token -> BS
tEndName = BS
"template" } ->
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
x }
| forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[ BS
"body"
, BS
"html"
, BS
"br"
] -> do
forall s. Parser s -> BS -> ST s ()
insertHtmlElementNamed Parser s
p BS
"body"
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInBody
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"head" } ->
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) BS
"after head head"
TEnd {} ->
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) BS
"after head end tag"
Token
_otherwise -> do
forall s. Parser s -> BS -> ST s ()
insertHtmlElementNamed Parser s
p BS
"body"
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInBody
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
doModeInBody :: Parser s -> Token -> ST s ()
doModeInBody :: forall s. Parser s -> Token -> ST s ()
doModeInBody p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TChar {Word8
tCharData :: Word8
tCharData :: Token -> Word8
..} | Word8 -> Bool
chrWhitespace Word8
tCharData -> do
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p Token
t
TChar {} -> do
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p Token
t
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
TComment {} ->
forall s. Parser s -> Token -> ST s ()
insertComment Parser s
p Token
t
TDoctype {} ->
BS -> ST s ()
warn BS
"doctype"
TStart { tStartName :: Token -> BS
tStartName = x :: BS
x@BS
"html" } -> do
BS -> ST s ()
warn BS
x
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall s. Parser s -> ST s Bool
elementStackHasTemplate Parser s
p) forall a b. (a -> b) -> a -> b
$ do
forall s. Parser s -> ST s (Maybe DOMID)
lastNodeID Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Just DOMID
i -> do
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p forall a b. (a -> b) -> a -> b
$ DOMID -> Seq DOMAttr -> DOM -> DOM
domAttrMerge DOMID
i forall a b. (a -> b) -> a -> b
$ forall a. [a] -> Seq a
Seq.fromList forall a b. (a -> b) -> a -> b
$
forall a b. (a -> b) -> [a] -> [b]
map (\(TAttr BS
n BS
v HTMLAttrNamespace
s) -> BS -> BS -> HTMLAttrNamespace -> DOMAttr
DOMAttr BS
n BS
v HTMLAttrNamespace
s) forall a b. (a -> b) -> a -> b
$ Token -> [TAttr]
tStartAttr Token
t
Maybe DOMID
Nothing -> do
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
TStart { tStartName :: Token -> BS
tStartName = BS
x }
| forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[ BS
"base"
, BS
"basefont"
, BS
"bgsound"
, BS
"link"
, BS
"meta"
, BS
"noframes"
, BS
"script"
, BS
"style"
, BS
"template"
, BS
"title"
] ->
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"template" } ->
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = x :: BS
x@BS
"body" } -> do
BS -> ST s ()
warn BS
x
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall (m :: * -> *). Functor m => m Bool -> m Bool
notM (forall s. Parser s -> ST s Bool
elementStackHasBody Parser s
p)
forall (m :: * -> *). Monad m => m Bool -> m Bool -> m Bool
||^ forall (f :: * -> *) a b. Applicative f => (a -> b) -> f a -> f b
liftA (forall a. Eq a => a -> a -> Bool
==DOMID
1) (forall s. Parser s -> ST s DOMID
elementStackSize Parser s
p)
forall (m :: * -> *). Monad m => m Bool -> m Bool -> m Bool
||^ (forall s. Parser s -> ST s Bool
elementStackHasTemplate Parser s
p)) forall a b. (a -> b) -> a -> b
$ do
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
Maybe DOMID
y <- forall a. [a] -> Maybe a
listToMaybe forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. DOMID -> [a] -> [a]
drop DOMID
1 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. [a] -> [a]
reverse forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s [DOMID]
elementStack Parser s
p
case Maybe DOMID
y of
Just DOMID
i -> do
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p forall a b. (a -> b) -> a -> b
$ DOMID -> Seq DOMAttr -> DOM -> DOM
domAttrMerge DOMID
i forall a b. (a -> b) -> a -> b
$ forall a. [a] -> Seq a
Seq.fromList forall a b. (a -> b) -> a -> b
$
forall a b. (a -> b) -> [a] -> [b]
map (\(TAttr BS
n BS
v HTMLAttrNamespace
s) -> BS -> BS -> HTMLAttrNamespace -> DOMAttr
DOMAttr BS
n BS
v HTMLAttrNamespace
s) forall a b. (a -> b) -> a -> b
$ Token -> [TAttr]
tStartAttr Token
t
Maybe DOMID
Nothing -> do
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
TStart { tStartName :: Token -> BS
tStartName = x :: BS
x@BS
"frameset" } -> do
BS -> ST s ()
warn BS
x
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall (f :: * -> *) a b. Applicative f => (a -> b) -> f a -> f b
liftA (forall a. Eq a => a -> a -> Bool
==DOMID
1) (forall s. Parser s -> ST s DOMID
elementStackSize Parser s
p)
forall (m :: * -> *). Monad m => m Bool -> m Bool -> m Bool
||^ forall (m :: * -> *). Functor m => m Bool -> m Bool
notM (forall s. Parser s -> ST s Bool
elementStackHasBody Parser s
p)
forall (m :: * -> *). Monad m => m Bool -> m Bool -> m Bool
||^ forall (m :: * -> *). Functor m => m Bool -> m Bool
notM (forall s a. STRef s a -> ST s a
rref STRef s Bool
parserFrameSetOK)) forall a b. (a -> b) -> a -> b
$ do
Maybe DOMNode
y <- forall a. [a] -> Maybe a
listToMaybe forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. DOMID -> [a] -> [a]
drop DOMID
1 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. [a] -> [a]
reverse forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s [DOMNode]
elementStackNodes Parser s
p
case Maybe DOMNode
y of
Just DOMNode
n -> do
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p forall a b. (a -> b) -> a -> b
$ DOMID -> DOMID -> DOM -> DOM
domRemoveChild (DOMNode -> DOMID
domNodeParent DOMNode
n) forall a b. (a -> b) -> a -> b
$ DOMNode -> DOMID
domNodeID DOMNode
n
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopWhile Parser s
p forall a b. (a -> b) -> a -> b
$ \DOMNode
n ->
DOMNode -> DOMType
domNodeType DOMNode
n forall a. Eq a => a -> a -> Bool
/= BS -> DOMType
domMakeTypeHTML BS
"html"
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInFrameset
Maybe DOMNode
Nothing -> do
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
Token
TEOF -> do
DOMID
n <- forall s. Parser s -> ST s DOMID
templateModeCount Parser s
p
if DOMID
n forall a. Ord a => a -> a -> Bool
> DOMID
0
then forall s. Parser s -> Token -> ST s ()
doModeInTemplate Parser s
p Token
t
else do
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (forall s. Parser s -> (DOMNode -> Bool) -> ST s Bool
elementStackAny Parser s
p forall a b. (a -> b) -> a -> b
$ [BS] -> DOMNode -> Bool
elementNameNotIn
[BS
"dd", BS
"dt", BS
"li", BS
"menuitem", BS
"optgroup",
BS
"option", BS
"p", BS
"rb", BS
"rp", BS
"rt", BS
"rtc",
BS
"tbody", BS
"td", BS
"tfoot", BS
"th", BS
"thead", BS
"tr",
BS
"body", BS
"html"]) forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"bad element on stack"
forall s. Parser s -> ST s ()
parserSetDone Parser s
p
TEnd { tEndName :: Token -> BS
tEndName = x :: BS
x@BS
"body" } -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
x
forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p DOMType
a forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn BS
"no body element in scope"
Bool
True -> do
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (forall s. Parser s -> (DOMNode -> Bool) -> ST s Bool
elementStackAny Parser s
p forall a b. (a -> b) -> a -> b
$ [BS] -> DOMNode -> Bool
elementNameNotIn
[BS
"dd", BS
"dt", BS
"li", BS
"menuitem", BS
"optgroup",
BS
"option", BS
"p", BS
"rb", BS
"rp", BS
"rt", BS
"rtc",
BS
"tbody", BS
"td", BS
"tfoot", BS
"th", BS
"thead", BS
"tr",
BS
"body", BS
"html"]) forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"bad element on stack"
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeAfterBody
TEnd { tEndName :: Token -> BS
tEndName = x :: BS
x@BS
"html" } -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
x
forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p DOMType
a forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn BS
"no body element in scope"
Bool
True -> do
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (forall s. Parser s -> (DOMNode -> Bool) -> ST s Bool
elementStackAny Parser s
p forall a b. (a -> b) -> a -> b
$ [BS] -> DOMNode -> Bool
elementNameNotIn
[BS
"dd", BS
"dt", BS
"li", BS
"menuitem", BS
"optgroup",
BS
"option", BS
"p", BS
"rb", BS
"rp", BS
"rt", BS
"rtc",
BS
"tbody", BS
"td", BS
"tfoot", BS
"th", BS
"thead", BS
"tr",
BS
"body", BS
"html"]) forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"bad element on stack"
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeAfterBody
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"address", BS
"article", BS
"aside", BS
"blockquote",
BS
"center", BS
"details", BS
"dialog", BS
"dir", BS
"div", BS
"dl",
BS
"fieldset", BS
"figcaption", BS
"figure", BS
"footer", BS
"header",
BS
"hgroup", BS
"main", BS
"nav", BS
"ol", BS
"p", BS
"section",
BS
"summary", BS
"ul"] -> do
ST s ()
closeP
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"menu" } -> do
ST s ()
closeP
ST s ()
popMenuitem
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x }
| forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [BS
"h1", BS
"h2", BS
"h3", BS
"h4", BS
"h5", BS
"h6"] -> do
ST s ()
closeP
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (forall s. Parser s -> [DOMType] -> ST s Bool
currentNodeHasTypeIn Parser s
p forall a b. (a -> b) -> a -> b
$ [BS] -> [DOMType]
domTypesHTML
[BS
"h1", BS
"h2", BS
"h3", BS
"h4", BS
"h5", BS
"h6"]) forall a b. (a -> b) -> a -> b
$ do
BS -> ST s ()
warn BS
"bad header tag on stack"
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [BS
"pre", BS
"listing"] -> do
ST s ()
closeP
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ST s ()
parserSkipNextLF Parser s
p
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
"form" } -> do
(forall s. Parser s -> ST s Bool
formNotNull Parser s
p forall (m :: * -> *). Monad m => m Bool -> m Bool -> m Bool
&&^ forall s. Parser s -> ST s Bool
elementStackMissingTemplate Parser s
p) forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
True ->
BS -> ST s ()
warn BS
"form without template"
Bool
False -> do
ST s ()
closeP
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (forall s. Parser s -> ST s Bool
elementStackMissingTemplate Parser s
p) forall a b. (a -> b) -> a -> b
$ forall s. Parser s -> ST s ()
saveForm Parser s
p
TStart { tStartName :: Token -> BS
tStartName = x :: BS
x@BS
"li" } -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
x
s :: Set DOMType
s = forall a. Ord a => [a] -> Set a
Set.fromList forall a b. (a -> b) -> a -> b
$ [BS] -> [DOMType]
domTypesHTML [ BS
"address", BS
"div", BS
"p" ]
f :: [DOMType] -> ST s ()
f [] = forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
f (DOMType
y:[DOMType]
ys)
| DOMType
y forall a. Eq a => a -> a -> Bool
== DOMType
a = do
forall s. Parser s -> BS -> ST s ()
generateImpliedEndTagsExcept Parser s
p BS
x
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a) forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node is not li"
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
| DOMType -> Bool
elementIsSpecial DOMType
y Bool -> Bool -> Bool
&& forall a. Ord a => a -> Set a -> Bool
Set.notMember DOMType
y Set DOMType
s = forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
| Bool
otherwise = [DOMType] -> ST s ()
f [DOMType]
ys
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
forall s. Parser s -> ST s [DOMType]
elementStackTypes Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= [DOMType] -> ST s ()
f
ST s ()
closeP
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [BS
"dd", BS
"dt"] -> do
let dd :: DOMType
dd = BS -> DOMType
domMakeTypeHTML BS
"dd"
dt :: DOMType
dt = BS -> DOMType
domMakeTypeHTML BS
"dt"
s :: Set DOMType
s = forall a. Ord a => [a] -> Set a
Set.fromList forall a b. (a -> b) -> a -> b
$ [BS] -> [DOMType]
domTypesHTML [ BS
"address", BS
"div", BS
"p" ]
f :: [DOMType] -> ST s ()
f [] = forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
f (DOMType
y:[DOMType]
ys)
| DOMType
y forall a. Eq a => a -> a -> Bool
== DOMType
dd Bool -> Bool -> Bool
|| DOMType
y forall a. Eq a => a -> a -> Bool
== DOMType
dt = do
forall s. Parser s -> BS -> ST s ()
generateImpliedEndTagsExcept Parser s
p forall a b. (a -> b) -> a -> b
$ DOMType -> BS
domTypeName DOMType
y
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
y) forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node is not dd or dt"
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
y
| DOMType -> Bool
elementIsSpecial DOMType
y Bool -> Bool -> Bool
&& forall a. Ord a => a -> Set a -> Bool
Set.notMember DOMType
y Set DOMType
s = forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
| Bool
otherwise = [DOMType] -> ST s ()
f [DOMType]
ys
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
forall s. Parser s -> ST s [DOMType]
elementStackTypes Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= [DOMType] -> ST s ()
f
ST s ()
closeP
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"plaintext" } -> do
ST s ()
closeP
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ST s ()
parserSetPLAINTEXT Parser s
p
TStart { tStartName :: Token -> BS
tStartName = x :: BS
x@BS
"button" } -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
x
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p DOMType
a) forall a b. (a -> b) -> a -> b
$ do
BS -> ST s ()
warn BS
"button element in scope"
forall s. Parser s -> ST s ()
generateImpliedEndTags Parser s
p
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
TEnd { tEndName :: Token -> BS
tEndName = BS
x }
| forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [BS
"address", BS
"article", BS
"aside", BS
"blockquote", BS
"button",
BS
"center", BS
"details", BS
"dialog", BS
"dir", BS
"div", BS
"dl",
BS
"fieldset", BS
"figcaption", BS
"figure", BS
"footer", BS
"header",
BS
"hgroup", BS
"listing", BS
"main", BS
"menu", BS
"nav", BS
"ol",
BS
"pre", BS
"section", BS
"summary", BS
"ul"] -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
x
forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p DOMType
a forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn BS
"element not in scope"
Bool
True -> do
forall s. Parser s -> ST s ()
generateImpliedEndTags Parser s
p
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a) forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node wrong type"
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
TEnd { tEndName :: Token -> BS
tEndName = x :: BS
x@BS
"form" } ->
forall s. Parser s -> ST s Bool
elementStackHasTemplate Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False -> do
forall s. Parser s -> ST s (Maybe DOMID)
getFormID Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Maybe DOMID
Nothing ->
BS -> ST s ()
warn BS
"form not defined"
Just DOMID
n -> do
DOMType
a <- forall a. HasCallStack => Maybe a -> a
fromJust forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s (Maybe DOMType)
getFormType Parser s
p
forall s. Parser s -> Maybe DOMID -> ST s ()
setFormID Parser s
p forall a. Maybe a
Nothing
forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p DOMType
a forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn BS
"form not in scope"
Bool
True -> do
forall s. Parser s -> ST s ()
generateImpliedEndTags Parser s
p
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall (f :: * -> *) a b. Applicative f => (a -> b) -> f a -> f b
liftA (forall a. Eq a => a -> a -> Bool
==(forall a. a -> Maybe a
Just DOMID
n)) (forall s. Parser s -> ST s (Maybe DOMID)
currentNodeID Parser s
p)) forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node is wrong node"
forall s. Parser s -> DOMID -> ST s ()
elementStackRemove Parser s
p DOMID
n
Bool
True -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
x
forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p DOMType
a forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn BS
"form not in scope"
Bool
True -> do
forall s. Parser s -> ST s ()
generateImpliedEndTags Parser s
p
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a) forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node is not a form"
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
TEnd { tEndName :: Token -> BS
tEndName = x :: BS
x@BS
"p" } -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
x
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall s. Parser s -> DOMType -> ST s Bool
elementInButtonScope Parser s
p DOMType
a) forall a b. (a -> b) -> a -> b
$ do
BS -> ST s ()
warn BS
"no p in button scope"
forall s. Parser s -> BS -> ST s ()
insertHtmlElementNamed Parser s
p BS
x
forall s. Parser s -> ST s ()
closeElementP Parser s
p
TEnd { tEndName :: Token -> BS
tEndName = x :: BS
x@BS
"li" } -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
x
forall s. Parser s -> DOMType -> ST s Bool
elementInListScope Parser s
p DOMType
a forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn BS
"no li in list scope"
Bool
True -> do
forall s. Parser s -> BS -> ST s ()
generateImpliedEndTagsExcept Parser s
p BS
x
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a) forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node not an li element"
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
TEnd { tEndName :: Token -> BS
tEndName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [BS
"dd", BS
"dt"] -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
x
forall s. Parser s -> DOMType -> ST s Bool
elementInListScope Parser s
p DOMType
a forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn BS
"no dd or dt in list scope"
Bool
True -> do
forall s. Parser s -> BS -> ST s ()
generateImpliedEndTagsExcept Parser s
p BS
x
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a) forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current not is not a dd or dt"
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
TEnd { tEndName :: Token -> BS
tEndName = BS
x }
| forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [BS
"h1", BS
"h2", BS
"h3", BS
"h4", BS
"h5", BS
"h6"] -> do
let h :: [DOMType]
h = [BS] -> [DOMType]
domTypesHTML [BS
"h1", BS
"h2", BS
"h3", BS
"h4", BS
"h5", BS
"h6"]
forall (m :: * -> *) a. Monad m => (a -> m Bool) -> [a] -> m Bool
anyM (forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p) [DOMType]
h forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn BS
"header element not in scope"
Bool
True -> do
forall s. Parser s -> ST s ()
generateImpliedEndTags Parser s
p
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p forall a b. (a -> b) -> a -> b
$ BS -> DOMType
domMakeTypeHTML BS
x) forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node not a header type"
forall s. Parser s -> [DOMType] -> ST s ()
elementStackPopUntilTypeIn Parser s
p [DOMType]
h
TEnd { tEndName :: Token -> BS
tEndName = BS
"sarcasm" } ->
ST s ()
doAnyOtherEndTag
TStart { tStartName :: Token -> BS
tStartName = x :: BS
x@BS
"a" } -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
x
forall s. Parser s -> BS -> ST s (Maybe ParserFormatItem)
activeFormatFindTag Parser s
p BS
x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Maybe ParserFormatItem
Nothing -> forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
Just (ParserFormatElement DOMID
i Token
_) -> do
BS -> ST s ()
warn BS
"active format already has anchor"
BS -> ST s ()
runAA BS
x
forall s. Parser s -> DOMID -> ST s ()
elementStackRemove Parser s
p DOMID
i
forall s. Parser s -> DOMID -> ST s ()
activeFormatRemove Parser s
p DOMID
i
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> Token -> ST s ()
activeFormatAddCurrentNode Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"b", BS
"big", BS
"code", BS
"em", BS
"font", BS
"i", BS
"s",
BS
"small", BS
"strike", BS
"strong", BS
"tt", BS
"u"] -> do
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> Token -> ST s ()
activeFormatAddCurrentNode Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = x :: BS
x@BS
"nobr" } -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
x
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p DOMType
a) forall a b. (a -> b) -> a -> b
$ do
BS -> ST s ()
warn BS
"nobr tag when nobr element already in scope"
BS -> ST s ()
runAA BS
x
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> Token -> ST s ()
activeFormatAddCurrentNode Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"a", BS
"b", BS
"big", BS
"code", BS
"em", BS
"font", BS
"i", BS
"nobr",
BS
"s", BS
"small", BS
"strike", BS
"strong", BS
"tt", BS
"u"] ->
BS -> ST s ()
runAA BS
x
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"applet", BS
"marquee", BS
"object"] -> do
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ST s ()
activeFormatAddMarker Parser s
p
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
TEnd { tEndName :: Token -> BS
tEndName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"applet", BS
"marquee", BS
"object"] -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
x
forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p DOMType
a forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn BS
"element scope missing"
Bool
True -> do
forall s. Parser s -> ST s ()
generateImpliedEndTags Parser s
p
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a) forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node is wring type"
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
forall s. Parser s -> ST s ()
activeFormatClear Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
"table" } -> do
DOMQuirks
q <- DOM -> DOMQuirks
domQuirksGet forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s DOM
getDOM Parser s
p
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (DOMQuirks
q forall a. Eq a => a -> a -> Bool
/= DOMQuirks
DOMQuirksMode) ST s ()
closeP
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTable
TEnd { tEndName :: Token -> BS
tEndName = BS
"br" } -> do
BS -> ST s ()
warn BS
"br end tag"
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p forall a b. (a -> b) -> a -> b
$ BS -> Bool -> [TAttr] -> Token
TStart BS
"br" Bool
False []
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"area", BS
"br", BS
"embed", BS
"img", BS
"keygen", BS
"wbr"] -> do
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
"input" } -> do
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
case BS -> Token -> Maybe BS
tokenGetAttrVal BS
"type" Token
t of
Just BS
v -> forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (BS -> BS
bsLower BS
v forall a. Eq a => a -> a -> Bool
/= BS
"hidden") forall a b. (a -> b) -> a -> b
$ forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
Maybe BS
Nothing -> forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"param", BS
"source", BS
"track"] -> do
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
"hr" } -> do
ST s ()
closeP
ST s ()
popMenuitem
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
"image" } -> do
BS -> ST s ()
warn BS
"image"
let t' :: Token
t' = Token
t { tStartName :: BS
tStartName = BS
"img" }
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t'
TStart { tStartName :: Token -> BS
tStartName = BS
"textarea" } -> do
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ST s ()
parserSkipNextLF Parser s
p
forall s. Parser s -> ST s ()
parserSetRCDATA Parser s
p
forall s. Parser s -> ST s ()
saveMode Parser s
p
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeText
TStart { tStartName :: Token -> BS
tStartName = BS
"xmp" } -> do
ST s ()
closeP
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
forall s. Parser s -> Token -> ST s ()
insertElementRAWTEXT Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"iframe" } -> do
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
forall s. Parser s -> Token -> ST s ()
insertElementRAWTEXT Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"noembed" } ->
forall s. Parser s -> Token -> ST s ()
insertElementRAWTEXT Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"select" } -> do
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
Set ParserMode
s <- forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ forall a. Ord a => [a] -> Set a
Set.fromList
[ ParserMode
ModeInTable, ParserMode
ModeInCaption, ParserMode
ModeInTableBody,
ParserMode
ModeInRow, ParserMode
ModeInCell ]
forall s a. STRef s a -> ST s a
rref STRef s ParserMode
parserInsertionMode forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \ParserMode
x -> forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p forall a b. (a -> b) -> a -> b
$
if forall a. Ord a => a -> Set a -> Bool
Set.member ParserMode
x Set ParserMode
s
then ParserMode
ModeInSelectInTable
else ParserMode
ModeInSelect
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"optgroup", BS
"option"] -> do
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopIf Parser s
p forall a b. (a -> b) -> a -> b
$ BS -> DOMNode -> Bool
elementName BS
"option"
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"menuitem" } -> do
ST s ()
popMenuitem
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [BS
"rb", BS
"rtc"] -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
"ruby"
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p DOMType
a) forall a b. (a -> b) -> a -> b
$ do
forall s. Parser s -> ST s ()
generateImpliedEndTags Parser s
p
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a) forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"ruby element not in scope"
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [BS
"rp", BS
"rt"] -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
"ruby"
b :: DOMType
b = BS -> DOMType
domMakeTypeHTML BS
"rtc"
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p DOMType
a) forall a b. (a -> b) -> a -> b
$ do
forall s. Parser s -> BS -> ST s ()
generateImpliedEndTagsExcept Parser s
p BS
"rtc"
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a forall (m :: * -> *). Monad m => m Bool -> m Bool -> m Bool
||^ forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
b) forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"ruby or rtc element not in scope"
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"math" } -> do
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
forall s. Parser s -> Token -> ST s ()
insertMathMLElement Parser s
p forall b c a. (b -> c) -> (a -> b) -> a -> c
. Token -> Token
adjustAttrForeign forall b c a. (b -> c) -> (a -> b) -> a -> c
. Token -> Token
adjustAttrMathML forall a b. (a -> b) -> a -> b
$ Token
t
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Token -> Bool
tStartClosed Token
t) forall a b. (a -> b) -> a -> b
$ do
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
"svg" } -> do
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
forall s. Parser s -> Token -> ST s ()
insertSvgElement Parser s
p forall b c a. (b -> c) -> (a -> b) -> a -> c
. Token -> Token
adjustAttrForeign forall b c a. (b -> c) -> (a -> b) -> a -> c
. Token -> Token
adjustAttrSVG forall a b. (a -> b) -> a -> b
$ Token
t
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Token -> Bool
tStartClosed Token
t) forall a b. (a -> b) -> a -> b
$ do
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"caption", BS
"col", BS
"colgroup", BS
"frame", BS
"head",
BS
"tbody", BS
"td", BS
"tfoot", BS
"th", BS
"thead", BS
"tr"] ->
BS -> ST s ()
warn BS
"bad start token"
TStart {} -> do
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
TEnd {} ->
ST s ()
doAnyOtherEndTag
where
closeP :: ST s ()
closeP = do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
"p"
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (forall s. Parser s -> DOMType -> ST s Bool
elementInButtonScope Parser s
p DOMType
a) forall a b. (a -> b) -> a -> b
$ forall s. Parser s -> ST s ()
closeElementP Parser s
p
popMenuitem :: ST s ()
popMenuitem =
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopIf Parser s
p forall a b. (a -> b) -> a -> b
$ BS -> DOMNode -> Bool
elementName BS
"menuitem"
runAA :: BS -> ST s ()
runAA =
forall a b c. (a -> b -> c) -> b -> a -> c
flip (forall s. Parser s -> BS -> ST s () -> ST s ()
adoptionAgencyRun Parser s
p) ST s ()
doAnyOtherEndTag
doAnyOtherEndTag :: ST s ()
doAnyOtherEndTag =
forall s. Parser s -> ST s [DOMType]
elementStackTypes Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= [DOMType] -> ST s ()
f
where
n :: BS
n = Token -> BS
tEndName Token
t
a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
n
f :: [DOMType] -> ST s ()
f [] = forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
f (DOMType
x:[DOMType]
xs)
| DOMType
x forall a. Eq a => a -> a -> Bool
== DOMType
a = do
forall s. Parser s -> BS -> ST s ()
generateImpliedEndTagsExcept Parser s
p BS
n
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
x) forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node has wrong type"
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
| DOMType -> Bool
elementIsSpecial DOMType
x = do
BS -> ST s ()
warn BS
"special element in stack"
| Bool
otherwise = [DOMType] -> ST s ()
f [DOMType]
xs
warn :: BS -> ST s ()
warn BS
x =
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) forall a b. (a -> b) -> a -> b
$ BS
"in body " forall a. Semigroup a => a -> a -> a
<> BS
x
doModeText :: Parser s -> Token -> ST s ()
doModeText :: forall s. Parser s -> Token -> ST s ()
doModeText p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TChar {} ->
forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p Token
t
Token
TEOF -> do
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) BS
"text eof"
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ST s ()
restoreMode Parser s
p
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"script" } -> do
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ST s ()
restoreMode Parser s
p
Token
_otherwise -> do
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ST s ()
restoreMode Parser s
p
doModeInTable :: Parser s -> Token -> ST s ()
doModeInTable :: forall s. Parser s -> Token -> ST s ()
doModeInTable p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TChar {} -> do
Bool
a <- forall s. Parser s -> [DOMType] -> ST s Bool
currentNodeHasTypeIn Parser s
p forall a b. (a -> b) -> a -> b
$ [BS] -> [DOMType]
domTypesHTML
[BS
"table", BS
"tbody", BS
"tfoot", BS
"thead", BS
"tr"]
if Bool
a
then do
forall s. Parser s -> ST s ()
pendingTableCharInit Parser s
p
forall s. Parser s -> ST s ()
saveMode Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTableText
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
else do
ST s ()
anythingElse
TComment {} ->
forall s. Parser s -> Token -> ST s ()
insertComment Parser s
p Token
t
TDoctype {} ->
BS -> ST s ()
warn BS
"doctype"
TStart { tStartName :: Token -> BS
tStartName = BS
"caption" } -> do
ST s ()
clearToTableContext
forall s. Parser s -> ST s ()
activeFormatAddMarker Parser s
p
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInCaption
TStart { tStartName :: Token -> BS
tStartName = BS
"colgroup" } -> do
ST s ()
clearToTableContext
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInColumnGroup
TStart { tStartName :: Token -> BS
tStartName = x :: BS
x@BS
"col" } -> do
ST s ()
clearToTableContext
forall s. Parser s -> BS -> ST s ()
insertHtmlElementNamed Parser s
p BS
x
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInColumnGroup
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"tbody", BS
"tfoot", BS
"thead"] -> do
ST s ()
clearToTableContext
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTableBody
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"td", BS
"th", BS
"tr"] -> do
ST s ()
clearToTableContext
forall s. Parser s -> BS -> ST s ()
insertHtmlElementNamed Parser s
p BS
"tbody"
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTableBody
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = x :: BS
x@BS
"table" } -> do
BS -> ST s ()
warn BS
"table start tag"
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
x
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p DOMType
a) forall a b. (a -> b) -> a -> b
$ do
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
forall s. Parser s -> ST s ()
resetInsertionMode Parser s
p
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = x :: BS
x@BS
"table" } -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
x
forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p DOMType
a forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn BS
"no table in scope"
Bool
True -> do
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
forall s. Parser s -> ST s ()
resetInsertionMode Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"body", BS
"caption", BS
"col", BS
"colgroup", BS
"html",
BS
"tbody", BS
"td", BS
"tfoot", BS
"th", BS
"thead", BS
"tr"] ->
BS -> ST s ()
warn BS
"unexpected start tag"
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"style", BS
"script", BS
"template"] ->
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"template" } ->
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"input" } -> do
if case BS -> Token -> Maybe TAttr
tokenGetAttr BS
"type" Token
t of
Maybe TAttr
Nothing -> Bool
True
Just TAttr
a -> BS -> BS
bsLower (TAttr -> BS
tAttrName TAttr
a) forall a. Eq a => a -> a -> Bool
/= BS
"hidden"
then ST s ()
anythingElse
else do
BS -> ST s ()
warn BS
"hidden input"
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
"form" } -> do
BS -> ST s ()
warn BS
"form start tag"
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall s. Parser s -> ST s Bool
elementStackHasTemplate Parser s
p forall (m :: * -> *). Monad m => m Bool -> m Bool -> m Bool
||^ forall s. Parser s -> ST s Bool
formNotNull Parser s
p) forall a b. (a -> b) -> a -> b
$ do
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ST s ()
saveForm Parser s
p
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Token
TEOF ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
Token
_otherwise ->
ST s ()
anythingElse
where
clearToTableContext :: ST s ()
clearToTableContext =
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopWhile Parser s
p forall a b. (a -> b) -> a -> b
$ \DOMNode
x -> Bool -> Bool
not forall a b. (a -> b) -> a -> b
$ forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem (DOMNode -> DOMType
domNodeType DOMNode
x) forall a b. (a -> b) -> a -> b
$
[BS] -> [DOMType]
domTypesHTML [BS
"table", BS
"template", BS
"html"]
anythingElse :: ST s ()
anythingElse = do
BS -> ST s ()
warn BS
"unexpected token"
forall s. Parser s -> ST s ()
fosterParentingSet Parser s
p
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
forall s. Parser s -> ST s ()
fosterParentingClear Parser s
p
warn :: BS -> ST s ()
warn BS
x =
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) forall a b. (a -> b) -> a -> b
$ BS
"in table " forall a. Semigroup a => a -> a -> a
<> BS
x
doModeInTableText :: Parser s -> Token -> ST s ()
doModeInTableText :: forall s. Parser s -> Token -> ST s ()
doModeInTableText p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TChar {} ->
forall s. Parser s -> Token -> ST s ()
pendingTableCharAppend Parser s
p Token
t
Token
_otherwise -> do
[Token]
a <- forall s. Parser s -> ST s [Token]
pendingTableChars Parser s
p
if forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any (Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word8 -> Bool
chrWhitespace forall b c a. (b -> c) -> (a -> b) -> a -> c
. Token -> Word8
tCharData) [Token]
a
then do
BS -> ST s ()
warn BS
"unexpected character"
forall s. Parser s -> ST s ()
fosterParentingSet Parser s
p
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p) [Token]
a
forall s. Parser s -> ST s ()
fosterParentingClear Parser s
p
else do
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p) [Token]
a
forall s. Parser s -> ST s ()
restoreMode Parser s
p
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
where
warn :: BS -> ST s ()
warn BS
x =
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) forall a b. (a -> b) -> a -> b
$ BS
"in table text " forall a. Semigroup a => a -> a -> a
<> BS
x
doModeInCaption :: Parser s -> Token -> ST s ()
doModeInCaption :: forall s. Parser s -> Token -> ST s ()
doModeInCaption p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TEnd { tEndName :: Token -> BS
tEndName = x :: BS
x@BS
"caption" } ->
ST s ()
processCaption
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"caption", BS
"col", BS
"colgroup",
BS
"tbody", BS
"td", BS
"tfoot", BS
"th", BS
"thead", BS
"tr"] -> do
ST s ()
processCaption
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"table" } -> do
ST s ()
processCaption
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"body", BS
"col", BS
"colgroup", BS
"html",
BS
"tbody", BS
"td", BS
"tfoot", BS
"th", BS
"thead", BS
"tr"] ->
BS -> ST s ()
warn BS
"unexpected end tag"
Token
_otherwise ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
where
processCaption :: ST s ()
processCaption = do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
"caption"
forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p DOMType
a forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn BS
"no caption in table scope"
Bool
True -> do
forall s. Parser s -> ST s ()
generateImpliedEndTags Parser s
p
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a) forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node is not a caption"
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
forall s. Parser s -> ST s ()
activeFormatClear Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTable
warn :: BS -> ST s ()
warn BS
x =
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) forall a b. (a -> b) -> a -> b
$ BS
"in caption " forall a. Semigroup a => a -> a -> a
<> BS
x
doModeInColumnGroup :: Parser s -> Token -> ST s ()
doModeInColumnGroup :: forall s. Parser s -> Token -> ST s ()
doModeInColumnGroup p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TChar {Word8
tCharData :: Word8
tCharData :: Token -> Word8
..} | Word8 -> Bool
chrWhitespace Word8
tCharData ->
forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p Token
t
TComment {} ->
forall s. Parser s -> Token -> ST s ()
insertComment Parser s
p Token
t
TDoctype {} ->
BS -> ST s ()
warn BS
"doctype"
TStart { tStartName :: Token -> BS
tStartName = BS
"html" } ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"col" } -> do
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
TEnd { tEndName :: Token -> BS
tEndName = x :: BS
x@BS
"colgroup" } -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
x
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn BS
"current node not colgroup end"
Bool
True -> do
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTable
TEnd { tEndName :: Token -> BS
tEndName = BS
"col" } ->
BS -> ST s ()
warn BS
"col end tag"
TStart { tStartName :: Token -> BS
tStartName = BS
"template" } ->
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"template" } ->
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
Token
TEOF ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
Token
_otherwise -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
"colgroup"
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn BS
"current node not colgroup end"
Bool
True -> do
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTable
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
where
warn :: BS -> ST s ()
warn BS
x =
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) forall a b. (a -> b) -> a -> b
$ BS
"in column group " forall a. Semigroup a => a -> a -> a
<> BS
x
doModeInTableBody :: Parser s -> Token -> ST s ()
doModeInTableBody :: forall s. Parser s -> Token -> ST s ()
doModeInTableBody p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TStart { tStartName :: Token -> BS
tStartName = BS
"tr" } -> do
ST s ()
clearToTableBodyContext
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInRow
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [BS
"th", BS
"td"] -> do
BS -> ST s ()
warn BS
"th or td missing tr"
ST s ()
clearToTableBodyContext
forall s. Parser s -> BS -> ST s ()
insertHtmlElementNamed Parser s
p BS
"tr"
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInRow
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"tbody", BS
"tfoot", BS
"thead"] -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
x
forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p DOMType
a forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn BS
"element not in table scope"
Bool
True -> do
ST s ()
clearToTableBodyContext
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTable
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"caption", BS
"col", BS
"colgroup", BS
"tbody", BS
"tfoot", BS
"thead"] ->
ST s ()
processElements
TEnd { tEndName :: Token -> BS
tEndName = BS
"table" } ->
ST s ()
processElements
TEnd { tEndName :: Token -> BS
tEndName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"body", BS
"caption", BS
"col", BS
"colgroup", BS
"html", BS
"td", BS
"th", BS
"tr"] ->
BS -> ST s ()
warn BS
"unexpected end tag"
Token
_otherwise ->
forall s. Parser s -> Token -> ST s ()
doModeInTable Parser s
p Token
t
where
processElements :: ST s ()
processElements = do
forall (m :: * -> *) a. Monad m => (a -> m Bool) -> [a] -> m Bool
anyM (forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p forall b c a. (b -> c) -> (a -> b) -> a -> c
. BS -> DOMType
domMakeTypeHTML)
[BS
"tbody", BS
"tfoot", BS
"thead"] forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn BS
"element not in table scope"
Bool
True -> do
ST s ()
clearToTableBodyContext
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTable
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
clearToTableBodyContext :: ST s ()
clearToTableBodyContext =
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopWhile Parser s
p forall a b. (a -> b) -> a -> b
$ \DOMNode
x -> Bool -> Bool
not forall a b. (a -> b) -> a -> b
$ forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem (DOMNode -> DOMType
domNodeType DOMNode
x) forall a b. (a -> b) -> a -> b
$
[BS] -> [DOMType]
domTypesHTML [BS
"tbody", BS
"tfoot", BS
"thead", BS
"template", BS
"html"]
warn :: BS -> ST s ()
warn BS
x =
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) forall a b. (a -> b) -> a -> b
$ BS
"in table body " forall a. Semigroup a => a -> a -> a
<> BS
x
doModeInRow :: Parser s -> Token -> ST s ()
doModeInRow :: forall s. Parser s -> Token -> ST s ()
doModeInRow p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [BS
"th", BS
"td"] -> do
ST s ()
clearToTableRowContext
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInCell
forall s. Parser s -> ST s ()
activeFormatAddMarker Parser s
p
TEnd { tEndName :: Token -> BS
tEndName = BS
"tr" } ->
ST s ()
processTr
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"caption", BS
"col", BS
"colgroup", BS
"tbody", BS
"tfoot", BS
"thead", BS
"tr"] -> do
ST s ()
processTr
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"table" } -> do
ST s ()
processTr
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"tbody", BS
"tfoot", BS
"thead"] -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
x
b :: DOMType
b = BS -> DOMType
domMakeTypeHTML BS
"tr"
forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p DOMType
a forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn BS
"element not in table scope"
Bool
True ->
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p DOMType
b) forall a b. (a -> b) -> a -> b
$ do
ST s ()
clearToTableRowContext
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTableBody
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"body", BS
"caption", BS
"col", BS
"colgroup", BS
"html", BS
"td", BS
"th"] ->
BS -> ST s ()
warn BS
"unexpected end tag"
Token
_otherwise ->
forall s. Parser s -> Token -> ST s ()
doModeInTable Parser s
p Token
t
where
processTr :: ST s ()
processTr = do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
"tr"
forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p DOMType
a forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn BS
"element not in table scope"
Bool
True -> do
ST s ()
clearToTableRowContext
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTableBody
clearToTableRowContext :: ST s ()
clearToTableRowContext =
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopWhile Parser s
p forall a b. (a -> b) -> a -> b
$ \DOMNode
x -> Bool -> Bool
not forall a b. (a -> b) -> a -> b
$ forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem (DOMNode -> DOMType
domNodeType DOMNode
x) forall a b. (a -> b) -> a -> b
$
[BS] -> [DOMType]
domTypesHTML [BS
"tr", BS
"template", BS
"html"]
warn :: BS -> ST s ()
warn BS
x =
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) forall a b. (a -> b) -> a -> b
$ BS
"in row " forall a. Semigroup a => a -> a -> a
<> BS
x
doModeInCell :: Parser s -> Token -> ST s ()
doModeInCell :: forall s. Parser s -> Token -> ST s ()
doModeInCell p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TEnd { tEndName :: Token -> BS
tEndName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [BS
"td", BS
"th"] -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
x
forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p DOMType
a forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn BS
"element not in table scope"
Bool
True -> do
forall s. Parser s -> ST s ()
generateImpliedEndTags Parser s
p
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a) forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn forall a b. (a -> b) -> a -> b
$ BS
"current node not " forall a. Semigroup a => a -> a -> a
<> BS
x
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
forall s. Parser s -> ST s ()
activeFormatClear Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInRow
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"caption", BS
"col", BS
"colgroup",
BS
"tbody", BS
"td", BS
"tfoot", BS
"th", BS
"thead", BS
"tr"] -> do
forall (m :: * -> *) a. Monad m => (a -> m Bool) -> [a] -> m Bool
anyM (forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p forall b c a. (b -> c) -> (a -> b) -> a -> c
. BS -> DOMType
domMakeTypeHTML) [BS
"td", BS
"th"] forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn BS
"td or th not in table scope"
Bool
True -> do
ST s ()
closeCell
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"body", BS
"caption", BS
"col", BS
"colgroup", BS
"html"] ->
BS -> ST s ()
warn BS
"unexpected end tag"
TEnd { tEndName :: Token -> BS
tEndName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"table", BS
"tbody", BS
"tfoot", BS
"thead", BS
"tr"] -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
x
forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p DOMType
a forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn BS
"element not in table scope"
Bool
True -> do
ST s ()
closeCell
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
Token
_otherwise ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
where
closeCell :: ST s ()
closeCell = do
let a :: [DOMType]
a = [BS] -> [DOMType]
domTypesHTML [BS
"td", BS
"th"]
forall s. Parser s -> ST s ()
generateImpliedEndTags Parser s
p
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall s. Parser s -> [DOMType] -> ST s Bool
currentNodeHasTypeIn Parser s
p [DOMType]
a) forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node is not td or th"
forall s. Parser s -> [DOMType] -> ST s ()
elementStackPopUntilTypeIn Parser s
p [DOMType]
a
forall s. Parser s -> ST s ()
activeFormatClear Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInRow
warn :: BS -> ST s ()
warn BS
x =
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) forall a b. (a -> b) -> a -> b
$ BS
"in cell " forall a. Semigroup a => a -> a -> a
<> BS
x
doModeInSelect :: Parser s -> Token -> ST s ()
doModeInSelect :: forall s. Parser s -> Token -> ST s ()
doModeInSelect p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TChar {} ->
forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p Token
t
TComment {} ->
forall s. Parser s -> Token -> ST s ()
insertComment Parser s
p Token
t
TDoctype {} ->
BS -> ST s ()
warn BS
"doctype"
TStart { tStartName :: Token -> BS
tStartName = BS
"html" } ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = x :: BS
x@BS
"option" } -> do
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopIf Parser s
p forall a b. (a -> b) -> a -> b
$ BS -> DOMNode -> Bool
elementName BS
x
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = x :: BS
x@BS
"optgroup" } -> do
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopIf Parser s
p forall a b. (a -> b) -> a -> b
$ BS -> DOMNode -> Bool
elementName BS
"option"
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopIf Parser s
p forall a b. (a -> b) -> a -> b
$ BS -> DOMNode -> Bool
elementName BS
x
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = x :: BS
x@BS
"optgroup" } -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
"option"
b :: DOMType
b = BS -> DOMType
domMakeTypeHTML BS
x
[DOMType]
y <- forall a. DOMID -> [a] -> [a]
take DOMID
2 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s [DOMType]
elementStackTypes Parser s
p
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when ([DOMType]
y forall a. Eq a => a -> a -> Bool
== [DOMType
a,DOMType
b]) forall a b. (a -> b) -> a -> b
$ forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn forall a b. (a -> b) -> a -> b
$ BS
"current node not " forall a. Semigroup a => a -> a -> a
<> BS
x
Bool
True ->
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
TEnd { tEndName :: Token -> BS
tEndName = x :: BS
x@BS
"option" } -> do
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p (BS -> DOMType
domMakeTypeHTML BS
x) forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn forall a b. (a -> b) -> a -> b
$ BS
"current node not " forall a. Semigroup a => a -> a -> a
<> BS
x
Bool
True ->
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
TEnd { tEndName :: Token -> BS
tEndName = x :: BS
x@BS
"select" } -> do
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
x
forall s. Parser s -> DOMType -> ST s Bool
elementInSelectScope Parser s
p DOMType
a forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn BS
"no select in select scope"
Bool
True -> do
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
forall s. Parser s -> ST s ()
resetInsertionMode Parser s
p
TStart { tStartName :: Token -> BS
tStartName = x :: BS
x@BS
"select" } -> do
BS -> ST s ()
warn BS
"unexpected start tag"
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
x
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (forall s. Parser s -> DOMType -> ST s Bool
elementInSelectScope Parser s
p DOMType
a) forall a b. (a -> b) -> a -> b
$ do
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
forall s. Parser s -> ST s ()
resetInsertionMode Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"input", BS
"keygen", BS
"textarea"] -> do
BS -> ST s ()
warn BS
"unexpected start tag"
let a :: DOMType
a = BS -> DOMType
domMakeTypeHTML BS
x
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (forall s. Parser s -> DOMType -> ST s Bool
elementInSelectScope Parser s
p DOMType
a) forall a b. (a -> b) -> a -> b
$ do
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
forall s. Parser s -> ST s ()
resetInsertionMode Parser s
p
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"script", BS
"template"] ->
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"template" } ->
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
Token
TEOF ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
Token
_otherwise ->
BS -> ST s ()
warn BS
"unexpected token"
where
warn :: BS -> ST s ()
warn BS
x =
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) forall a b. (a -> b) -> a -> b
$ BS
"in select " forall a. Semigroup a => a -> a -> a
<> BS
x
doModeInSelectInTable :: Parser s -> Token -> ST s ()
doModeInSelectInTable :: forall s. Parser s -> Token -> ST s ()
doModeInSelectInTable p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"caption", BS
"table", BS
"tbody", BS
"tfoot",
BS
"thead", BS
"tr", BS
"td", BS
"th"] -> do
BS -> ST s ()
warn BS
"unexpected start tag"
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p forall a b. (a -> b) -> a -> b
$ BS -> DOMType
domMakeTypeHTML BS
"select"
forall s. Parser s -> ST s ()
resetInsertionMode Parser s
p
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"caption", BS
"table", BS
"tbody", BS
"tfoot",
BS
"thead", BS
"tr", BS
"td", BS
"th"] -> do
BS -> ST s ()
warn BS
"unexpected end tag"
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p forall a b. (a -> b) -> a -> b
$ BS -> DOMType
domMakeTypeHTML BS
x) forall a b. (a -> b) -> a -> b
$ do
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p forall a b. (a -> b) -> a -> b
$ BS -> DOMType
domMakeTypeHTML BS
"select"
forall s. Parser s -> ST s ()
resetInsertionMode Parser s
p
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
Token
_otherwise ->
forall s. Parser s -> Token -> ST s ()
doModeInSelect Parser s
p Token
t
where
warn :: BS -> ST s ()
warn BS
x =
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) forall a b. (a -> b) -> a -> b
$ BS
"in select in table " forall a. Semigroup a => a -> a -> a
<> BS
x
doModeInTemplate :: Parser s -> Token -> ST s ()
doModeInTemplate :: forall s. Parser s -> Token -> ST s ()
doModeInTemplate p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TChar {} ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TComment {} ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TDoctype {} ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"base", BS
"basefont", BS
"bgsound", BS
"link", BS
"meta",
BS
"noframes", BS
"script", BS
"style", BS
"template", BS
"title"] ->
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"template" } ->
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"caption", BS
"col", BS
"tbody", BS
"tfoot", BS
"thead"] -> do
forall s. Parser s -> ST s ()
templateModePop Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
templateModePush Parser s
p ParserMode
ModeInTable
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTable
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"col" } -> do
forall s. Parser s -> ST s ()
templateModePop Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
templateModePush Parser s
p ParserMode
ModeInColumnGroup
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInColumnGroup
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"tr" } -> do
forall s. Parser s -> ST s ()
templateModePop Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
templateModePush Parser s
p ParserMode
ModeInTableBody
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTableBody
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [BS
"td", BS
"th"] -> do
forall s. Parser s -> ST s ()
templateModePop Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
templateModePush Parser s
p ParserMode
ModeInRow
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInRow
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TStart {} -> do
forall s. Parser s -> ST s ()
templateModePop Parser s
p
forall s. Parser s -> ParserMode -> ST s ()
templateModePush Parser s
p ParserMode
ModeInBody
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInBody
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd {} ->
BS -> ST s ()
warn BS
"unexpected end tag"
Token
TEOF ->
forall s. Parser s -> ST s Bool
elementStackMissingTemplate Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
True ->
forall s. Parser s -> ST s ()
parserSetDone Parser s
p
Bool
False -> do
BS -> ST s ()
warn BS
"template on stack"
forall s. Parser s -> ST s ()
activeFormatClear Parser s
p
forall s. Parser s -> ST s ()
templateModePop Parser s
p
forall s. Parser s -> ST s ()
resetInsertionMode Parser s
p
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
where
warn :: BS -> ST s ()
warn BS
x =
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) forall a b. (a -> b) -> a -> b
$ BS
"in template " forall a. Semigroup a => a -> a -> a
<> BS
x
doModeAfterBody :: Parser s -> Token -> ST s ()
doModeAfterBody :: forall s. Parser s -> Token -> ST s ()
doModeAfterBody p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TChar {Word8
tCharData :: Word8
tCharData :: Token -> Word8
..} | Word8 -> Bool
chrWhitespace Word8
tCharData ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TComment {} -> do
DOMPos
x <- DOMID -> DOMPos
domPos forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. HasCallStack => Maybe a -> a
fromJust forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s (Maybe DOMID)
lastNodeID Parser s
p
forall s. Parser s -> Token -> ST s DOMNode
commentMake Parser s
p Token
t forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall (f :: * -> *) a. Functor f => f a -> f ()
void forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s. Parser s -> DOMPos -> DOMNode -> ST s DOMID
insertNewNode Parser s
p DOMPos
x
TDoctype {} ->
BS -> ST s ()
warn BS
"doctype"
TStart { tStartName :: Token -> BS
tStartName = BS
"html" } ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"html" } ->
forall s a. STRef s a -> ST s a
rref STRef s Bool
parserFragmentMode forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
True ->
BS -> ST s ()
warn BS
"html end tag"
Bool
False ->
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeAfterAfterBody
Token
TEOF ->
forall s. Parser s -> ST s ()
parserSetDone Parser s
p
Token
_otherwise -> do
BS -> ST s ()
warn BS
"unexpected token"
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInBody
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
where
warn :: BS -> ST s ()
warn BS
x =
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) forall a b. (a -> b) -> a -> b
$ BS
"after body " forall a. Semigroup a => a -> a -> a
<> BS
x
doModeInFrameset :: Parser s -> Token -> ST s ()
doModeInFrameset :: forall s. Parser s -> Token -> ST s ()
doModeInFrameset p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TChar {Word8
tCharData :: Word8
tCharData :: Token -> Word8
..} | Word8 -> Bool
chrWhitespace Word8
tCharData ->
forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p Token
t
TComment {} ->
forall s. Parser s -> Token -> ST s ()
insertComment Parser s
p Token
t
TDoctype {} ->
BS -> ST s ()
warn BS
"doctype"
TStart { tStartName :: Token -> BS
tStartName = BS
"html" } ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"frameset" } ->
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"frameset" } -> do
forall s. Parser s -> BS -> ST s Bool
currentNodeHasHTMLType Parser s
p BS
"html" forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
True ->
BS -> ST s ()
warn BS
"current node is html"
Bool
False -> do
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (forall (m :: * -> *). Functor m => m Bool -> m Bool
notM (forall s a. STRef s a -> ST s a
rref STRef s Bool
parserFragmentMode) forall (m :: * -> *). Monad m => m Bool -> m Bool -> m Bool
&&^
forall (m :: * -> *). Functor m => m Bool -> m Bool
notM (forall s. Parser s -> BS -> ST s Bool
currentNodeHasHTMLType Parser s
p BS
"frameset")) forall a b. (a -> b) -> a -> b
$
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeAfterFrameset
TStart { tStartName :: Token -> BS
tStartName = BS
"frame" } -> do
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
"noframes" } ->
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
Token
TEOF -> do
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (forall s. Parser s -> BS -> ST s Bool
currentNodeHasHTMLType Parser s
p BS
"html") forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node is not html"
forall s. Parser s -> ST s ()
parserSetDone Parser s
p
Token
_ ->
BS -> ST s ()
warn BS
"unexpected token"
where
warn :: BS -> ST s ()
warn BS
x =
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) forall a b. (a -> b) -> a -> b
$ BS
"in frameset " forall a. Semigroup a => a -> a -> a
<> BS
x
doModeAfterFrameset :: Parser s -> Token -> ST s ()
doModeAfterFrameset :: forall s. Parser s -> Token -> ST s ()
doModeAfterFrameset p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TChar {Word8
tCharData :: Word8
tCharData :: Token -> Word8
..} | Word8 -> Bool
chrWhitespace Word8
tCharData ->
forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p Token
t
TComment {} ->
forall s. Parser s -> Token -> ST s ()
insertComment Parser s
p Token
t
TDoctype {} ->
BS -> ST s ()
warn BS
"doctype"
TStart { tStartName :: Token -> BS
tStartName = BS
"html" } ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"html" } ->
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeAfterAfterFrameset
TStart { tStartName :: Token -> BS
tStartName = BS
"noframes" } ->
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
Token
TEOF ->
forall s. Parser s -> ST s ()
parserSetDone Parser s
p
Token
_ ->
BS -> ST s ()
warn BS
"unexpected token"
where
warn :: BS -> ST s ()
warn BS
x =
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) forall a b. (a -> b) -> a -> b
$ BS
"after frameset " forall a. Semigroup a => a -> a -> a
<> BS
x
doModeAfterAfterBody :: Parser s -> Token -> ST s ()
doModeAfterAfterBody :: forall s. Parser s -> Token -> ST s ()
doModeAfterAfterBody p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TComment {} ->
forall s. Parser s -> Token -> ST s ()
insertDocComment Parser s
p Token
t
TDoctype {} ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TChar {Word8
tCharData :: Word8
tCharData :: Token -> Word8
..} | Word8 -> Bool
chrWhitespace Word8
tCharData ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"html" } ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
Token
TEOF ->
forall s. Parser s -> ST s ()
parserSetDone Parser s
p
Token
_otherwise -> do
BS -> ST s ()
warn BS
"unexpected token"
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInBody
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
where
warn :: BS -> ST s ()
warn BS
x =
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) forall a b. (a -> b) -> a -> b
$ BS
"after after body " forall a. Semigroup a => a -> a -> a
<> BS
x
doModeAfterAfterFrameset :: Parser s -> Token -> ST s ()
doModeAfterAfterFrameset :: forall s. Parser s -> Token -> ST s ()
doModeAfterAfterFrameset p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TComment {} ->
forall s. Parser s -> Token -> ST s ()
insertDocComment Parser s
p Token
t
TDoctype {} ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TChar {Word8
tCharData :: Word8
tCharData :: Token -> Word8
..} | Word8 -> Bool
chrWhitespace Word8
tCharData ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"html" } ->
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
Token
TEOF ->
forall s. Parser s -> ST s ()
parserSetDone Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
"noframes" } ->
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
Token
_otherwise -> do
BS -> ST s ()
warn BS
"unexpected token"
where
warn :: BS -> ST s ()
warn BS
x =
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) forall a b. (a -> b) -> a -> b
$ BS
"after after frameset " forall a. Semigroup a => a -> a -> a
<> BS
x
doForeignContent :: Parser s -> Token -> ST s ()
doForeignContent :: forall s. Parser s -> Token -> ST s ()
doForeignContent p :: Parser s
p@Parser {Bool
STRef s Bool
STRef s [DOMID]
STRef s [Token]
STRef s [ParserFormatItem]
STRef s [ParserMode]
STRef s (Maybe DOMID)
STRef s (IntMap (STRef s (Buffer s)))
STRef s (DList BS)
STRef s (Lexer s)
STRef s DOM
STRef s (ParserAdoptionAgency s)
STRef s ParserMode
parserLogErrors :: Bool
parserTextMap :: STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: STRef s Bool
parserErrors :: STRef s (DList BS)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
parserTableChars :: STRef s [Token]
parserDone :: STRef s Bool
parserFrameSetOK :: STRef s Bool
parserFosterParenting :: STRef s Bool
parserFragmentMode :: STRef s Bool
parserSelfClosingFlag :: STRef s Bool
parserFormElement :: STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
parserTemplateMode :: STRef s [ParserMode]
parserOriginalMode :: STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
parserActiveFormatList :: STRef s [ParserFormatItem]
parserElementStack :: STRef s [DOMID]
parserDOM :: STRef s DOM
parserLexer :: STRef s (Lexer s)
parserLogErrors :: forall s. Parser s -> Bool
parserTextMap :: forall s. Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserIFrameSrcDoc :: forall s. Parser s -> STRef s Bool
parserErrors :: forall s. Parser s -> STRef s (DList BS)
parserAdoptionAgency :: forall s. Parser s -> STRef s (ParserAdoptionAgency s)
parserTableChars :: forall s. Parser s -> STRef s [Token]
parserDone :: forall s. Parser s -> STRef s Bool
parserFrameSetOK :: forall s. Parser s -> STRef s Bool
parserFosterParenting :: forall s. Parser s -> STRef s Bool
parserFragmentMode :: forall s. Parser s -> STRef s Bool
parserSelfClosingFlag :: forall s. Parser s -> STRef s Bool
parserFormElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserContextElement :: forall s. Parser s -> STRef s (Maybe DOMID)
parserTemplateMode :: forall s. Parser s -> STRef s [ParserMode]
parserOriginalMode :: forall s. Parser s -> STRef s ParserMode
parserInsertionMode :: forall s. Parser s -> STRef s ParserMode
parserActiveFormatList :: forall s. Parser s -> STRef s [ParserFormatItem]
parserElementStack :: forall s. Parser s -> STRef s [DOMID]
parserDOM :: forall s. Parser s -> STRef s DOM
parserLexer :: forall s. Parser s -> STRef s (Lexer s)
..} Token
t =
case Token
t of
TChar {Word8
tCharData :: Word8
tCharData :: Token -> Word8
..} | Word8 -> Bool
chrWhitespace Word8
tCharData ->
forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p Token
t
TChar {} -> do
forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p Token
t
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
TComment {} ->
forall s. Parser s -> Token -> ST s ()
insertComment Parser s
p Token
t
TDoctype {} ->
BS -> ST s ()
warn BS
"doctype"
TStart { tStartName :: Token -> BS
tStartName = BS
x } | forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"b", BS
"big", BS
"blockquote", BS
"body", BS
"br", BS
"center",
BS
"code", BS
"dd", BS
"div", BS
"dl", BS
"dt", BS
"em", BS
"embed",
BS
"h1", BS
"h2", BS
"h3", BS
"h4", BS
"h5", BS
"h6", BS
"head",
BS
"hr", BS
"i", BS
"img", BS
"li", BS
"listing", BS
"menu",
BS
"meta", BS
"nobr", BS
"ol", BS
"p", BS
"pre", BS
"ruby", BS
"s",
BS
"small", BS
"span", BS
"strong", BS
"strike", BS
"sub",
BS
"sup", BS
"table", BS
"tt", BS
"u", BS
"ul", BS
"var"]
Bool -> Bool -> Bool
|| BS
x forall a. Eq a => a -> a -> Bool
== BS
"font" Bool -> Bool -> Bool
&&
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any (forall a b c. (a -> b -> c) -> b -> a -> c
flip BS -> Token -> Bool
tokenHasAttr Token
t) [BS
"color",BS
"face",BS
"size"] -> do
BS -> ST s ()
warn BS
"unexpected start tag"
forall s a. STRef s a -> ST s a
rref STRef s Bool
parserFragmentMode forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
True ->
ST s ()
anyOtherStartTag
Bool
False -> do
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopWhile Parser s
p forall a b. (a -> b) -> a -> b
$ \DOMNode
n ->
Bool -> Bool
not (DOMNode -> Bool
isMathMLIntegrationPoint DOMNode
n
Bool -> Bool -> Bool
|| DOMNode -> Bool
isHtmlIntgrationPoint DOMNode
n
Bool -> Bool -> Bool
|| DOMNode -> Bool
domNodeIsHTML DOMNode
n)
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TStart {} ->
ST s ()
anyOtherStartTag
TEnd {} -> do
let s :: BS
s = BS
"script"
a :: DOMType
a = BS -> DOMType
domMakeTypeSVG BS
s
n :: BS
n = Token -> BS
tEndName Token
t
Bool
svg <- forall b a. b -> (a -> b) -> Maybe a -> b
maybe Bool
False (forall a. Eq a => a -> a -> Bool
(==) DOMType
a forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOMNode -> DOMType
domNodeType) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s (Maybe DOMNode)
currentNode Parser s
p
if BS
n forall a. Eq a => a -> a -> Bool
== BS
s Bool -> Bool -> Bool
&& Bool
svg
then ST s ()
doScriptEndTag
else do
DOMNode
node <- forall a. HasCallStack => Maybe a -> a
fromJust forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s (Maybe DOMNode)
currentNode Parser s
p
let h :: DOMNode -> BS
h = BS -> BS
bsLower forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOMNode -> BS
domNodeElementName
nodeName :: BS
nodeName = DOMNode -> BS
h DOMNode
node
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (BS
nodeName forall a. Eq a => a -> a -> Bool
/= BS
n) forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn forall a b. (a -> b) -> a -> b
$
BS
"bad end tag in foreign content ("
forall a. Semigroup a => a -> a -> a
<> BS
nodeName forall a. Semigroup a => a -> a -> a
<> BS
" /= " forall a. Semigroup a => a -> a -> a
<> String -> BS
bcPack (forall a. Show a => a -> String
show BS
n) forall a. Semigroup a => a -> a -> a
<> BS
")"
let f :: [DOMNode] -> ST s ()
f (DOMNode
x:[]) = forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
f (DOMNode
x:DOMNode
y:[DOMNode]
ys)
| DOMNode -> BS
h DOMNode
x forall a. Eq a => a -> a -> Bool
== BS
n =
forall s. Parser s -> DOMID -> ST s ()
elementStackPopUntilID Parser s
p forall a b. (a -> b) -> a -> b
$ DOMNode -> DOMID
domNodeID DOMNode
node
| DOMNode -> Bool
domNodeIsHTML DOMNode
y =
forall s. Parser s -> Token -> ST s ()
doHtmlContent Parser s
p Token
t
| Bool
otherwise =
[DOMNode] -> ST s ()
f (DOMNode
yforall a. a -> [a] -> [a]
:[DOMNode]
ys)
forall s. Parser s -> ST s [DOMNode]
elementStackNodes Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= [DOMNode] -> ST s ()
f
where
anyOtherStartTag :: ST s ()
anyOtherStartTag = do
(Token
t', HTMLNamespace
n) <- forall s. Parser s -> ST s (Maybe DOMNode)
adjustedCurrentNode Parser s
p forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Just DOMNode
a
| DOMNode -> Bool
domNodeIsMathML DOMNode
a ->
forall (f :: * -> *) a. Applicative f => a -> f a
pure ( Token -> Token
adjustAttrMathML Token
t
, DOMNode -> HTMLNamespace
domNodeElementNamespace DOMNode
a
)
| DOMNode -> Bool
domNodeIsSVG DOMNode
a ->
forall (f :: * -> *) a. Applicative f => a -> f a
pure ( Token -> Token
adjustElemSVG forall a b. (a -> b) -> a -> b
$ Token -> Token
adjustAttrSVG Token
t
, DOMNode -> HTMLNamespace
domNodeElementNamespace DOMNode
a
)
Maybe DOMNode
Nothing ->
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Token
t, HTMLNamespace
HTMLNamespaceHTML)
forall s. Parser s -> HTMLNamespace -> Token -> ST s ()
insertForeignElement Parser s
p HTMLNamespace
n forall a b. (a -> b) -> a -> b
$ Token -> Token
adjustAttrForeign Token
t'
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Token -> Bool
tStartClosed Token
t) forall a b. (a -> b) -> a -> b
$ do
Bool
svg <- forall b a. b -> (a -> b) -> Maybe a -> b
maybe Bool
False DOMNode -> Bool
domNodeIsSVG forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall s. Parser s -> ST s (Maybe DOMNode)
currentNode Parser s
p
if Token -> BS
tStartName Token
t forall a. Eq a => a -> a -> Bool
== BS
"script" Bool -> Bool -> Bool
&& Bool
svg
then do
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
ST s ()
doScriptEndTag
else do
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
doScriptEndTag :: ST s ()
doScriptEndTag = do
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
warn :: BS -> ST s ()
warn BS
x =
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (forall a. a -> Maybe a
Just Token
t) forall a b. (a -> b) -> a -> b
$ BS
"foreign content " forall a. Semigroup a => a -> a -> a
<> BS
x