{-# 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
( 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
{ Parser s -> STRef s (Lexer s)
parserLexer :: STRef s (Lexer s)
, Parser s -> STRef s DOM
parserDOM :: STRef s DOM
, Parser s -> STRef s [DOMID]
parserElementStack :: STRef s [DOMID]
, Parser s -> STRef s [ParserFormatItem]
parserActiveFormatList :: STRef s [ParserFormatItem]
, Parser s -> STRef s ParserMode
parserInsertionMode :: STRef s ParserMode
, Parser s -> STRef s ParserMode
parserOriginalMode :: STRef s ParserMode
, Parser s -> STRef s [ParserMode]
parserTemplateMode :: STRef s [ParserMode]
, Parser s -> STRef s (Maybe DOMID)
parserContextElement :: STRef s (Maybe DOMID)
, Parser s -> STRef s (Maybe DOMID)
parserHeadElement :: STRef s (Maybe DOMID)
, Parser s -> STRef s (Maybe DOMID)
parserFormElement :: STRef s (Maybe DOMID)
, Parser s -> STRef s Bool
parserSelfClosingFlag :: STRef s Bool
, Parser s -> STRef s Bool
parserFragmentMode :: STRef s Bool
, Parser s -> STRef s Bool
parserFosterParenting :: STRef s Bool
, Parser s -> STRef s Bool
parserFrameSetOK :: STRef s Bool
, Parser s -> STRef s Bool
parserDone :: STRef s Bool
, Parser s -> STRef s [Token]
parserTableChars :: STRef s [Token]
, Parser s -> STRef s (ParserAdoptionAgency s)
parserAdoptionAgency :: STRef s (ParserAdoptionAgency s)
, Parser s -> STRef s (DList BS)
parserErrors :: STRef s (DList BS)
, Parser s -> STRef s Bool
parserIFrameSrcDoc :: STRef s Bool
, Parser s -> STRef s (IntMap (STRef s (Buffer s)))
parserTextMap :: STRef s (IntMap (STRef s (Buffer 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
(ParserMode -> ParserMode -> Bool)
-> (ParserMode -> ParserMode -> Bool) -> Eq ParserMode
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
Eq ParserMode
-> (ParserMode -> ParserMode -> Ordering)
-> (ParserMode -> ParserMode -> Bool)
-> (ParserMode -> ParserMode -> Bool)
-> (ParserMode -> ParserMode -> Bool)
-> (ParserMode -> ParserMode -> Bool)
-> (ParserMode -> ParserMode -> ParserMode)
-> (ParserMode -> ParserMode -> ParserMode)
-> Ord 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
$cp1Ord :: Eq ParserMode
Ord, DOMID -> ParserMode -> ShowS
[ParserMode] -> ShowS
ParserMode -> String
(DOMID -> ParserMode -> ShowS)
-> (ParserMode -> String)
-> ([ParserMode] -> ShowS)
-> Show ParserMode
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
(ParserOptions -> ParserOptions -> Bool)
-> (ParserOptions -> ParserOptions -> Bool) -> Eq ParserOptions
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
Eq ParserOptions
-> (ParserOptions -> ParserOptions -> Ordering)
-> (ParserOptions -> ParserOptions -> Bool)
-> (ParserOptions -> ParserOptions -> Bool)
-> (ParserOptions -> ParserOptions -> Bool)
-> (ParserOptions -> ParserOptions -> Bool)
-> (ParserOptions -> ParserOptions -> ParserOptions)
-> (ParserOptions -> ParserOptions -> ParserOptions)
-> Ord 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
$cp1Ord :: Eq ParserOptions
Ord, DOMID -> ParserOptions -> ShowS
[ParserOptions] -> ShowS
ParserOptions -> String
(DOMID -> ParserOptions -> ShowS)
-> (ParserOptions -> String)
-> ([ParserOptions] -> ShowS)
-> Show ParserOptions
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
(ParserResult -> ParserResult -> Bool)
-> (ParserResult -> ParserResult -> Bool) -> Eq ParserResult
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
Eq ParserResult
-> (ParserResult -> ParserResult -> Ordering)
-> (ParserResult -> ParserResult -> Bool)
-> (ParserResult -> ParserResult -> Bool)
-> (ParserResult -> ParserResult -> Bool)
-> (ParserResult -> ParserResult -> Bool)
-> (ParserResult -> ParserResult -> ParserResult)
-> (ParserResult -> ParserResult -> ParserResult)
-> Ord 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
$cp1Ord :: Eq ParserResult
Ord, DOMID -> ParserResult -> ShowS
[ParserResult] -> ShowS
ParserResult -> String
(DOMID -> ParserResult -> ShowS)
-> (ParserResult -> String)
-> ([ParserResult] -> ShowS)
-> Show ParserResult
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
(ParserFormatItem -> ParserFormatItem -> Bool)
-> (ParserFormatItem -> ParserFormatItem -> Bool)
-> Eq ParserFormatItem
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
Eq ParserFormatItem
-> (ParserFormatItem -> ParserFormatItem -> Ordering)
-> (ParserFormatItem -> ParserFormatItem -> Bool)
-> (ParserFormatItem -> ParserFormatItem -> Bool)
-> (ParserFormatItem -> ParserFormatItem -> Bool)
-> (ParserFormatItem -> ParserFormatItem -> Bool)
-> (ParserFormatItem -> ParserFormatItem -> ParserFormatItem)
-> (ParserFormatItem -> ParserFormatItem -> ParserFormatItem)
-> Ord 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
$cp1Ord :: Eq ParserFormatItem
Ord, DOMID -> ParserFormatItem -> ShowS
[ParserFormatItem] -> ShowS
ParserFormatItem -> String
(DOMID -> ParserFormatItem -> ShowS)
-> (ParserFormatItem -> String)
-> ([ParserFormatItem] -> ShowS)
-> Show ParserFormatItem
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
(ParserElementCategory -> ParserElementCategory -> Bool)
-> (ParserElementCategory -> ParserElementCategory -> Bool)
-> Eq ParserElementCategory
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
Eq ParserElementCategory
-> (ParserElementCategory -> ParserElementCategory -> Ordering)
-> (ParserElementCategory -> ParserElementCategory -> Bool)
-> (ParserElementCategory -> ParserElementCategory -> Bool)
-> (ParserElementCategory -> ParserElementCategory -> Bool)
-> (ParserElementCategory -> ParserElementCategory -> Bool)
-> (ParserElementCategory
-> ParserElementCategory -> ParserElementCategory)
-> (ParserElementCategory
-> ParserElementCategory -> ParserElementCategory)
-> Ord 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
$cp1Ord :: Eq ParserElementCategory
Ord, DOMID -> ParserElementCategory -> ShowS
[ParserElementCategory] -> ShowS
ParserElementCategory -> String
(DOMID -> ParserElementCategory -> ShowS)
-> (ParserElementCategory -> String)
-> ([ParserElementCategory] -> ShowS)
-> Show ParserElementCategory
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
(ElementDetails -> ElementDetails -> Bool)
-> (ElementDetails -> ElementDetails -> Bool) -> Eq ElementDetails
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
Eq ElementDetails
-> (ElementDetails -> ElementDetails -> Ordering)
-> (ElementDetails -> ElementDetails -> Bool)
-> (ElementDetails -> ElementDetails -> Bool)
-> (ElementDetails -> ElementDetails -> Bool)
-> (ElementDetails -> ElementDetails -> Bool)
-> (ElementDetails -> ElementDetails -> ElementDetails)
-> (ElementDetails -> ElementDetails -> ElementDetails)
-> Ord 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
$cp1Ord :: Eq ElementDetails
Ord, DOMID -> ElementDetails -> ShowS
[ElementDetails] -> ShowS
ElementDetails -> String
(DOMID -> ElementDetails -> ShowS)
-> (ElementDetails -> String)
-> ([ElementDetails] -> ShowS)
-> Show ElementDetails
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 :: BS -> Bool -> Bool -> ParserOptions
ParserOptions
{ parserOptionInput :: BS
parserOptionInput = BS
bsEmpty
, parserOptionLogErrors :: Bool
parserOptionLogErrors = Bool
False
, parserOptionIgnoreEntities :: Bool
parserOptionIgnoreEntities = Bool
False
}
instance Default ParserResult where
def :: ParserResult
def = ParserResult :: DOM -> [BS] -> ParserResult
ParserResult
{ parserResultDOM :: DOM
parserResultDOM = DOM
forall a. Default a => a
def
, parserResultErrors :: [BS]
parserResultErrors = []
}
parseDocument :: ParserOptions -> Either BS ParserResult
parseDocument :: ParserOptions -> Either BS ParserResult
parseDocument ParserOptions
x =
(forall s. ST s (Either BS ParserResult)) -> Either BS ParserResult
forall a. (forall s. ST s a) -> a
runST ((forall s. ST s (Either BS ParserResult))
-> Either BS ParserResult)
-> (forall s. ST s (Either BS ParserResult))
-> Either BS ParserResult
forall a b. (a -> b) -> a -> b
$ do
ParserOptions -> ST s (Either BS (Parser s))
forall s. ParserOptions -> ST s (Either BS (Parser s))
parserNew ParserOptions
x ST s (Either BS (Parser s))
-> (Either BS (Parser s) -> ST s (Either BS ParserResult))
-> ST s (Either BS ParserResult)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Right Parser s
p -> ParserResult -> Either BS ParserResult
forall a b. b -> Either a b
Right (ParserResult -> Either BS ParserResult)
-> ST s ParserResult -> ST s (Either BS ParserResult)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s ParserResult
forall s. Parser s -> ST s ParserResult
parserRun Parser s
p
Left BS
e -> BS -> Either BS ParserResult
forall a b. a -> Either a b
Left (BS -> Either BS ParserResult)
-> ST s BS -> ST s (Either BS ParserResult)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> BS -> ST s BS
forall (f :: * -> *) a. Applicative f => a -> f a
pure BS
e
parseFragment :: ParserOptions -> Either BS ParserResult
parseFragment :: ParserOptions -> Either BS ParserResult
parseFragment ParserOptions
x = BS -> Either BS ParserResult
forall a b. a -> Either a b
Left BS
"fragment support not yet implemented"
parserNew :: ParserOptions -> ST s (Either BS (Parser s))
parserNew :: 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 <- LexerOptions -> ST s (Either BS (Lexer s))
forall s. LexerOptions -> ST s (Either BS (Lexer s))
lexerNew LexerOptions
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 -> Parser s -> Either BS (Parser s)
forall a b. b -> Either a b
Right (Parser s -> Either BS (Parser s))
-> ST s (Parser s) -> ST s (Either BS (Parser s))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ParserOptions -> Lexer s -> ST s (Parser s)
forall s. ParserOptions -> Lexer s -> ST s (Parser s)
parserMake ParserOptions
o Lexer s
lex
Left BS
err -> BS -> Either BS (Parser s)
forall a b. a -> Either a b
Left (BS -> Either BS (Parser s))
-> ST s BS -> ST s (Either BS (Parser s))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> BS -> ST s BS
forall (f :: * -> *) a. Applicative f => a -> f a
pure BS
err
parserMake :: ParserOptions -> Lexer s -> ST s (Parser s)
parserMake :: 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 <- Lexer s -> ST s (STRef s (Lexer s))
forall a s. a -> ST s (STRef s a)
newSTRef Lexer s
lexer
STRef s DOM
dom <- DOM -> ST s (STRef s DOM)
forall a s. a -> ST s (STRef s a)
newSTRef DOM
forall a. Default a => a
def
STRef s [DOMID]
stack <- [DOMID] -> ST s (STRef s [DOMID])
forall a s. a -> ST s (STRef s a)
newSTRef []
STRef s [ParserFormatItem]
fmtList <- [ParserFormatItem] -> ST s (STRef s [ParserFormatItem])
forall a s. a -> ST s (STRef s a)
newSTRef []
STRef s ParserMode
insMode <- ParserMode -> ST s (STRef s ParserMode)
forall a s. a -> ST s (STRef s a)
newSTRef ParserMode
ModeInitial
STRef s ParserMode
orgMode <- ParserMode -> ST s (STRef s ParserMode)
forall a s. a -> ST s (STRef s a)
newSTRef ParserMode
ModeInitial
STRef s [ParserMode]
tmpMode <- [ParserMode] -> ST s (STRef s [ParserMode])
forall a s. a -> ST s (STRef s a)
newSTRef []
STRef s (Maybe DOMID)
ctxElem <- Maybe DOMID -> ST s (STRef s (Maybe DOMID))
forall a s. a -> ST s (STRef s a)
newSTRef Maybe DOMID
forall a. Maybe a
Nothing
STRef s (Maybe DOMID)
headElem <- Maybe DOMID -> ST s (STRef s (Maybe DOMID))
forall a s. a -> ST s (STRef s a)
newSTRef Maybe DOMID
forall a. Maybe a
Nothing
STRef s (Maybe DOMID)
formElem <- Maybe DOMID -> ST s (STRef s (Maybe DOMID))
forall a s. a -> ST s (STRef s a)
newSTRef Maybe DOMID
forall a. Maybe a
Nothing
STRef s Bool
closing <- Bool -> ST s (STRef s Bool)
forall a s. a -> ST s (STRef s a)
newSTRef Bool
False
STRef s Bool
fragMode <- Bool -> ST s (STRef s Bool)
forall a s. a -> ST s (STRef s a)
newSTRef Bool
False
STRef s Bool
foster <- Bool -> ST s (STRef s Bool)
forall a s. a -> ST s (STRef s a)
newSTRef Bool
False
STRef s Bool
frameSet <- Bool -> ST s (STRef s Bool)
forall a s. a -> ST s (STRef s a)
newSTRef Bool
True
STRef s Bool
done <- Bool -> ST s (STRef s Bool)
forall a s. a -> ST s (STRef s a)
newSTRef Bool
False
STRef s [Token]
table <- [Token] -> ST s (STRef s [Token])
forall a s. a -> ST s (STRef s a)
newSTRef []
ParserAdoptionAgency s
aa <- ST s (ParserAdoptionAgency s)
forall s. ST s (ParserAdoptionAgency s)
defaultAA
STRef s (ParserAdoptionAgency s)
aaRef <- ParserAdoptionAgency s -> ST s (STRef s (ParserAdoptionAgency s))
forall a s. a -> ST s (STRef s a)
newSTRef ParserAdoptionAgency s
aa
STRef s (DList BS)
warn <- DList BS -> ST s (STRef s (DList BS))
forall a s. a -> ST s (STRef s a)
newSTRef DList BS
forall a. Default a => a
def
STRef s Bool
iframe <- Bool -> ST s (STRef s Bool)
forall a s. a -> ST s (STRef s a)
newSTRef Bool
False
STRef s (IntMap (STRef s (Buffer s)))
textMap <- IntMap (STRef s (Buffer s))
-> ST s (STRef s (IntMap (STRef s (Buffer s))))
forall a s. a -> ST s (STRef s a)
newSTRef IntMap (STRef s (Buffer s))
forall a. Default a => a
def
Parser s -> ST s (Parser s)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Parser s -> ST s (Parser s)) -> Parser s -> ST s (Parser s)
forall a b. (a -> b) -> a -> b
$ Parser :: forall s.
STRef s (Lexer s)
-> STRef s DOM
-> STRef s [DOMID]
-> STRef s [ParserFormatItem]
-> STRef s ParserMode
-> STRef s ParserMode
-> STRef s [ParserMode]
-> STRef s (Maybe DOMID)
-> STRef s (Maybe DOMID)
-> STRef s (Maybe DOMID)
-> STRef s Bool
-> STRef s Bool
-> STRef s Bool
-> STRef s Bool
-> STRef s Bool
-> STRef s [Token]
-> STRef s (ParserAdoptionAgency s)
-> STRef s (DList BS)
-> STRef s Bool
-> STRef s (IntMap (STRef s (Buffer s)))
-> Bool
-> Parser s
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 :: 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
STRef s Bool -> ST s Bool
forall s a. STRef s a -> ST s a
rref STRef s Bool
parserDone ST s Bool -> (Bool -> ST s ParserResult) -> ST s ParserResult
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
..} <- STRef s (Lexer s) -> ST s (Lexer s)
forall s a. STRef s a -> ST s a
rref STRef s (Lexer s)
parserLexer
DList BS
e <- DList BS -> DList BS -> DList BS
forall a. DList a -> DList a -> DList a
D.append (DList BS -> DList BS -> DList BS)
-> ST s (DList BS) -> ST s (DList BS -> DList BS)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> STRef s (DList BS) -> ST s (DList BS)
forall s a. STRef s a -> ST s a
rref STRef s (DList BS)
lexerErrors ST s (DList BS -> DList BS) -> ST s (DList BS) -> ST s (DList BS)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> STRef s (DList BS) -> ST s (DList BS)
forall s a. STRef s a -> ST s a
rref STRef s (DList BS)
parserErrors
DOM
d <- Parser s -> ST s DOM
forall s. Parser s -> ST s DOM
textMapDOM Parser s
p
ParserResult -> ST s ParserResult
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ParserResult -> ST s ParserResult)
-> ParserResult -> ST s ParserResult
forall a b. (a -> b) -> a -> b
$ DOM -> [BS] -> ParserResult
ParserResult DOM
d ([BS] -> ParserResult) -> [BS] -> ParserResult
forall a b. (a -> b) -> a -> b
$ DList BS -> [BS]
forall a. DList a -> [a]
D.toList DList BS
e
Bool
False -> do
Token
t <- STRef s (Lexer s) -> ST s (Lexer s)
forall s a. STRef s a -> ST s a
rref STRef s (Lexer s)
parserLexer ST s (Lexer s) -> (Lexer s -> ST s Token) -> ST s Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Lexer s -> ST s Token
forall s. Lexer s -> ST s Token
lexerNext
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
selfClosingInit Parser s
p Token
t
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
dispatchTreeConstruction Parser s
p Token
t
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (Parser s -> ST s Bool
forall s. Parser s -> ST s Bool
selfClosingFlag Parser s
p) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) BS
"self closing not acknowledged for token"
Parser s -> ST s ParserResult
forall s. Parser s -> ST s ParserResult
parserRun Parser s
p
dispatchTreeConstruction :: Parser s -> Token -> ST s ()
dispatchTreeConstruction :: 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 <- Parser s -> ST s Bool
forall s. Parser s -> ST s Bool
elementStackEmpty Parser s
p
Maybe DOMNode
a <- Parser s -> ST s (Maybe DOMNode)
forall s. Parser s -> ST s (Maybe DOMNode)
adjustedCurrentNode Parser s
p
Bool
b <- Bool -> ST s Bool
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Bool -> ST s Bool) -> Bool -> ST s Bool
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 Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doHtmlContent Parser s
p Token
t
else Parser s -> Token -> ST s ()
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 :: 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 <- STRef s ParserMode -> ST s ParserMode
forall s a. STRef s a -> ST s a
rref STRef s ParserMode
parserInsertionMode
ParserMode -> Parser s -> Token -> ST s ()
forall s. ParserMode -> Parser s -> Token -> ST s ()
parserInserter ParserMode
m Parser s
p Token
t
reprocess :: Parser s -> Token -> ST s ()
reprocess :: Parser s -> Token -> ST s ()
reprocess = Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doHtmlContent
parserInserter :: ParserMode -> Parser s -> Token -> ST s ()
parserInserter :: ParserMode -> Parser s -> Token -> ST s ()
parserInserter = \case
ParserMode
ModeInitial -> Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInitial
ParserMode
ModeBeforeHtml -> Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeBeforeHtml
ParserMode
ModeBeforeHead -> Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeBeforeHead
ParserMode
ModeInHead -> Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInHead
ParserMode
ModeInHeadNoscript -> Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInHeadNoscript
ParserMode
ModeAfterHead -> Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeAfterHead
ParserMode
ModeInBody -> Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInBody
ParserMode
ModeText -> Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeText
ParserMode
ModeInTable -> Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInTable
ParserMode
ModeInTableText -> Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInTableText
ParserMode
ModeInCaption -> Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInCaption
ParserMode
ModeInColumnGroup -> Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInColumnGroup
ParserMode
ModeInTableBody -> Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInTableBody
ParserMode
ModeInRow -> Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInRow
ParserMode
ModeInCell -> Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInCell
ParserMode
ModeInSelect -> Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInSelect
ParserMode
ModeInSelectInTable -> Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInSelectInTable
ParserMode
ModeInTemplate -> Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInTemplate
ParserMode
ModeAfterBody -> Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeAfterBody
ParserMode
ModeInFrameset -> Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInFrameset
ParserMode
ModeAfterFrameset -> Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeAfterFrameset
ParserMode
ModeAfterAfterBody -> Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeAfterAfterBody
ParserMode
ModeAfterAfterFrameset -> Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeAfterAfterFrameset
parseError :: Parser s -> Maybe Token -> BS -> ST s ()
parseError :: 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 =
Bool -> ST s () -> ST s ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when Bool
parserLogErrors (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
STRef s (DList BS) -> (DList BS -> DList BS) -> ST s ()
forall s a. STRef s a -> (a -> a) -> ST s ()
uref STRef s (DList BS)
parserErrors ((DList BS -> DList BS) -> ST s ())
-> (DList BS -> DList BS) -> ST s ()
forall a b. (a -> b) -> a -> b
$ (DList BS -> BS -> DList BS) -> BS -> DList BS -> DList BS
forall a b c. (a -> b -> c) -> b -> a -> c
flip DList BS -> BS -> DList BS
forall a. DList a -> a -> DList a
D.snoc BS
e
where
e :: BS
e = BS
s BS -> BS -> BS
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," BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
tStartName
Just (TEnd {BS
tEndName :: Token -> BS
tEndName :: BS
..}) -> BS
",tag-end," BS -> BS -> BS
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," BS -> BS -> BS
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 BS -> [BS] -> Bool
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 (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ BS
tStartName BS -> [BS] -> Bool
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 BS -> [BS] -> Bool
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 (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ BS
tEndName BS -> [BS] -> Bool
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 BS -> BS -> Bool
forall a. Eq a => a -> a -> Bool
== BS
x
elementNameNot :: BS -> DOMNode -> Bool
elementNameNot :: BS -> DOMNode -> Bool
elementNameNot BS
x = Bool -> Bool
not (Bool -> Bool) -> (DOMNode -> Bool) -> DOMNode -> Bool
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 BS -> [BS] -> Bool
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 (Bool -> Bool) -> (DOMNode -> Bool) -> DOMNode -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [BS] -> DOMNode -> Bool
elementNameIn [BS]
x
elementStack :: Parser s -> ST s [DOMID]
elementStack :: 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)
..} = STRef s [DOMID] -> ST s [DOMID]
forall s a. STRef s a -> ST s a
readSTRef STRef s [DOMID]
parserElementStack
elementStackEmpty :: Parser s -> ST s Bool
elementStackEmpty :: 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)
..} = [DOMID] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null ([DOMID] -> Bool) -> ST s [DOMID] -> ST s Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s [DOMID]
forall s. Parser s -> ST s [DOMID]
elementStack Parser s
p
elementStackSize :: Parser s -> ST s Int
elementStackSize :: 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)
..} = [DOMID] -> DOMID
forall (t :: * -> *) a. Foldable t => t a -> DOMID
length ([DOMID] -> DOMID) -> ST s [DOMID] -> ST s DOMID
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s [DOMID]
forall s. Parser s -> ST s [DOMID]
elementStack Parser s
p
elementStackModify :: Parser s -> ([DOMID] -> [DOMID]) -> ST s ()
elementStackModify :: 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 = STRef s [DOMID] -> ([DOMID] -> [DOMID]) -> ST s ()
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 :: 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 = Parser s -> ([DOMID] -> [DOMID]) -> ST s ()
forall s. Parser s -> ([DOMID] -> [DOMID]) -> ST s ()
elementStackModify Parser s
p (([DOMID] -> [DOMID]) -> ST s ())
-> ([DOMID] -> [DOMID]) -> ST s ()
forall a b. (a -> b) -> a -> b
$ (DOMID
xDOMID -> [DOMID] -> [DOMID]
forall a. a -> [a] -> [a]
:)
elementStackPop :: Parser s -> ST s ()
elementStackPop :: 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)
..} = Parser s -> ([DOMID] -> [DOMID]) -> ST s ()
forall s. Parser s -> ([DOMID] -> [DOMID]) -> ST s ()
elementStackModify Parser s
p (([DOMID] -> [DOMID]) -> ST s ())
-> ([DOMID] -> [DOMID]) -> ST s ()
forall a b. (a -> b) -> a -> b
$ DOMID -> [DOMID] -> [DOMID]
forall a. DOMID -> [a] -> [a]
drop DOMID
1
elementStackPopWhile :: Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopWhile :: 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 =
Parser s -> ST s (Maybe DOMNode)
forall s. Parser s -> ST s (Maybe DOMNode)
currentNode Parser s
p ST s (Maybe DOMNode) -> (Maybe DOMNode -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Just DOMNode
a | DOMNode -> Bool
f DOMNode
a -> Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p ST s () -> ST s () -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Parser s -> (DOMNode -> Bool) -> ST s ()
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopWhile Parser s
p DOMNode -> Bool
f
Maybe DOMNode
_ -> () -> ST s ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
elementStackPopIf :: Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopIf :: 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 =
Parser s -> ST s (Maybe DOMNode)
forall s. Parser s -> ST s (Maybe DOMNode)
currentNode Parser s
p ST s (Maybe DOMNode) -> (Maybe DOMNode -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Just DOMNode
a | DOMNode -> Bool
f DOMNode
a -> Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Maybe DOMNode
_ -> () -> ST s ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
elementStackPopUntil :: Parser s -> (DOMType -> Bool) -> ST s ()
elementStackPopUntil :: 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
Parser s -> (DOMNode -> Bool) -> ST s ()
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopWhile Parser s
p (Bool -> Bool
not (Bool -> Bool) -> (DOMNode -> Bool) -> DOMNode -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOMNode -> Bool
g)
Parser s -> (DOMNode -> Bool) -> ST s ()
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopIf Parser s
p DOMNode -> Bool
g
where
g :: DOMNode -> Bool
g = DOMType -> Bool
f (DOMType -> Bool) -> (DOMNode -> DOMType) -> DOMNode -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOMNode -> DOMType
domNodeType
elementStackPopUntilID :: Parser s -> DOMID -> ST s ()
elementStackPopUntilID :: Parser s -> DOMID -> ST s ()
elementStackPopUntilID Parser s
p DOMID
x = Parser s -> ([DOMID] -> [DOMID]) -> ST s ()
forall s. Parser s -> ([DOMID] -> [DOMID]) -> ST s ()
elementStackModify Parser s
p (([DOMID] -> [DOMID]) -> ST s ())
-> ([DOMID] -> [DOMID]) -> ST s ()
forall a b. (a -> b) -> a -> b
$ DOMID -> [DOMID] -> [DOMID]
forall a. DOMID -> [a] -> [a]
drop DOMID
1 ([DOMID] -> [DOMID]) -> ([DOMID] -> [DOMID]) -> [DOMID] -> [DOMID]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DOMID -> Bool) -> [DOMID] -> [DOMID]
forall a. (a -> Bool) -> [a] -> [a]
dropWhile (DOMID -> DOMID -> Bool
forall a. Eq a => a -> a -> Bool
/=DOMID
x)
elementStackPopUntilType :: Parser s -> DOMType -> ST s ()
elementStackPopUntilType :: Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
x = Parser s -> (DOMType -> Bool) -> ST s ()
forall s. Parser s -> (DOMType -> Bool) -> ST s ()
elementStackPopUntil Parser s
p (DOMType -> DOMType -> Bool
forall a. Eq a => a -> a -> Bool
==DOMType
x)
elementStackPopUntilTypeIn :: Parser s -> [DOMType] -> ST s ()
elementStackPopUntilTypeIn :: Parser s -> [DOMType] -> ST s ()
elementStackPopUntilTypeIn Parser s
p [DOMType]
x = Parser s -> (DOMType -> Bool) -> ST s ()
forall s. Parser s -> (DOMType -> Bool) -> ST s ()
elementStackPopUntil Parser s
p ((DOMType -> Bool) -> ST s ()) -> (DOMType -> Bool) -> ST s ()
forall a b. (a -> b) -> a -> b
$ (DOMType -> [DOMType] -> Bool) -> [DOMType] -> DOMType -> Bool
forall a b c. (a -> b -> c) -> b -> a -> c
flip DOMType -> [DOMType] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem [DOMType]
x
elementStackNodes :: Parser s -> ST s [DOMNode]
elementStackNodes :: Parser s -> ST s [DOMNode]
elementStackNodes Parser s
p = DOM -> [DOMID] -> [DOMNode]
domMapID (DOM -> [DOMID] -> [DOMNode])
-> ST s DOM -> ST s ([DOMID] -> [DOMNode])
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s DOM
forall s. Parser s -> ST s DOM
getDOM Parser s
p ST s ([DOMID] -> [DOMNode]) -> ST s [DOMID] -> ST s [DOMNode]
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser s -> ST s [DOMID]
forall s. Parser s -> ST s [DOMID]
elementStack Parser s
p
elementStackTypes :: Parser s -> ST s [DOMType]
elementStackTypes :: Parser s -> ST s [DOMType]
elementStackTypes Parser s
p = (DOMNode -> DOMType) -> [DOMNode] -> [DOMType]
forall a b. (a -> b) -> [a] -> [b]
map DOMNode -> DOMType
domNodeType ([DOMNode] -> [DOMType]) -> ST s [DOMNode] -> ST s [DOMType]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s [DOMNode]
forall s. Parser s -> ST s [DOMNode]
elementStackNodes Parser s
p
elementStackAny :: Parser s -> (DOMNode -> Bool) -> ST s Bool
elementStackAny :: Parser s -> (DOMNode -> Bool) -> ST s Bool
elementStackAny Parser s
p DOMNode -> Bool
f = (DOMNode -> Bool) -> [DOMNode] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any DOMNode -> Bool
f ([DOMNode] -> Bool) -> ST s [DOMNode] -> ST s Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s [DOMNode]
forall s. Parser s -> ST s [DOMNode]
elementStackNodes Parser s
p
elementStackAll :: Parser s -> (DOMNode -> Bool) -> ST s Bool
elementStackAll :: Parser s -> (DOMNode -> Bool) -> ST s Bool
elementStackAll Parser s
p DOMNode -> Bool
f = (DOMNode -> Bool) -> [DOMNode] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
all DOMNode -> Bool
f ([DOMNode] -> Bool) -> ST s [DOMNode] -> ST s Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s [DOMNode]
forall s. Parser s -> ST s [DOMNode]
elementStackNodes Parser s
p
elementStackHasBody :: Parser s -> ST s Bool
elementStackHasBody :: Parser s -> ST s Bool
elementStackHasBody Parser s
p =
([DOMType] -> [DOMType]) -> ST s [DOMType] -> ST s [DOMType]
forall (f :: * -> *) a b. Applicative f => (a -> b) -> f a -> f b
liftA [DOMType] -> [DOMType]
forall a. [a] -> [a]
reverse (Parser s -> ST s [DOMType]
forall s. Parser s -> ST s [DOMType]
elementStackTypes Parser s
p) ST s [DOMType] -> ([DOMType] -> ST s Bool) -> ST s Bool
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Bool -> ST s Bool
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Bool -> ST s Bool)
-> ([DOMType] -> Bool) -> [DOMType] -> ST s Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
(DOMType
_:DOMType
x:[DOMType]
_) -> DOMType
x DOMType -> DOMType -> Bool
forall a. Eq a => a -> a -> Bool
== BS -> DOMType
domMakeTypeHTML BS
"body"
[DOMType]
_otherwise -> Bool
False
elementStackHasTemplate :: Parser s -> ST s Bool
elementStackHasTemplate :: Parser s -> ST s Bool
elementStackHasTemplate Parser s
p = Parser s -> (DOMNode -> Bool) -> ST s Bool
forall s. Parser s -> (DOMNode -> Bool) -> ST s Bool
elementStackAny Parser s
p DOMNode -> Bool
domNodeIsTemplate
elementStackMissingTemplate :: Parser s -> ST s Bool
elementStackMissingTemplate :: Parser s -> ST s Bool
elementStackMissingTemplate Parser s
p = Parser s -> (DOMNode -> Bool) -> ST s Bool
forall s. Parser s -> (DOMNode -> Bool) -> ST s Bool
elementStackAll Parser s
p ((DOMNode -> Bool) -> ST s Bool) -> (DOMNode -> Bool) -> ST s Bool
forall a b. (a -> b) -> a -> b
$ Bool -> Bool
not (Bool -> Bool) -> (DOMNode -> Bool) -> DOMNode -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOMNode -> Bool
domNodeIsTemplate
elementStackRemove :: Parser s -> DOMID -> ST s ()
elementStackRemove :: Parser s -> DOMID -> ST s ()
elementStackRemove Parser s
p DOMID
x = Parser s -> ([DOMID] -> [DOMID]) -> ST s ()
forall s. Parser s -> ([DOMID] -> [DOMID]) -> ST s ()
elementStackModify Parser s
p (([DOMID] -> [DOMID]) -> ST s ())
-> ([DOMID] -> [DOMID]) -> ST s ()
forall a b. (a -> b) -> a -> b
$ (DOMID -> Bool) -> [DOMID] -> [DOMID]
forall a. (a -> Bool) -> [a] -> [a]
filter (DOMID -> DOMID -> Bool
forall a. Eq a => a -> a -> Bool
/=DOMID
x)
elementStackReplace :: Parser s -> DOMID -> DOMID -> ST s ()
elementStackReplace :: Parser s -> DOMID -> DOMID -> ST s ()
elementStackReplace Parser s
p DOMID
x DOMID
y =
Parser s -> ([DOMID] -> [DOMID]) -> ST s ()
forall s. Parser s -> ([DOMID] -> [DOMID]) -> ST s ()
elementStackModify Parser s
p (([DOMID] -> [DOMID]) -> ST s ())
-> ([DOMID] -> [DOMID]) -> ST s ()
forall a b. (a -> b) -> a -> b
$ (DOMID -> DOMID) -> [DOMID] -> [DOMID]
forall a b. (a -> b) -> [a] -> [b]
map (\DOMID
i -> if DOMID
i DOMID -> DOMID -> Bool
forall a. Eq a => a -> a -> Bool
== DOMID
x then DOMID
y else DOMID
i)
elementStackSucc :: Parser s -> DOMID -> ST s (Maybe DOMID)
elementStackSucc :: Parser s -> DOMID -> ST s (Maybe DOMID)
elementStackSucc Parser s
p DOMID
x = (DOMID -> Bool) -> [DOMID] -> Maybe DOMID
forall a. (a -> Bool) -> [a] -> Maybe a
findSucc (DOMID -> DOMID -> Bool
forall a. Eq a => a -> a -> Bool
==DOMID
x) ([DOMID] -> Maybe DOMID) -> ST s [DOMID] -> ST s (Maybe DOMID)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s [DOMID]
forall s. Parser s -> ST s [DOMID]
elementStack Parser s
p
elementStackInsertBefore :: Parser s -> DOMID -> DOMID -> ST s ()
elementStackInsertBefore :: Parser s -> DOMID -> DOMID -> ST s ()
elementStackInsertBefore Parser s
p DOMID
x DOMID
y = Parser s -> ([DOMID] -> [DOMID]) -> ST s ()
forall s. Parser s -> ([DOMID] -> [DOMID]) -> ST s ()
elementStackModify Parser s
p (([DOMID] -> [DOMID]) -> ST s ())
-> ([DOMID] -> [DOMID]) -> ST s ()
forall a b. (a -> b) -> a -> b
$ (DOMID -> Bool) -> DOMID -> [DOMID] -> [DOMID]
forall a. (a -> Bool) -> a -> [a] -> [a]
insertBefore (DOMID -> DOMID -> Bool
forall a. Eq a => a -> a -> Bool
==DOMID
x) DOMID
y
elementStackDetails :: Parser s -> ST s [ElementDetails]
elementStackDetails :: Parser s -> ST s [ElementDetails]
elementStackDetails Parser s
p = DOM -> [DOMID] -> [ElementDetails]
g (DOM -> [DOMID] -> [ElementDetails])
-> ST s DOM -> ST s ([DOMID] -> [ElementDetails])
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s DOM
forall s. Parser s -> ST s DOM
getDOM Parser s
p ST s ([DOMID] -> [ElementDetails])
-> ST s [DOMID] -> ST s [ElementDetails]
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser s -> ST s [DOMID]
forall s. Parser s -> ST s [DOMID]
elementStack Parser s
p
where
g :: DOM -> [DOMID] -> [ElementDetails]
g DOM
d [DOMID]
x = ((DOMID, DOMID) -> Maybe ElementDetails)
-> [(DOMID, DOMID)] -> [ElementDetails]
forall a b. (a -> Maybe b) -> [a] -> [b]
mapMaybe (DOM -> (DOMID, DOMID) -> Maybe ElementDetails
f DOM
d) ([(DOMID, DOMID)] -> [ElementDetails])
-> [(DOMID, DOMID)] -> [ElementDetails]
forall a b. (a -> b) -> a -> b
$ [DOMID] -> [DOMID] -> [(DOMID, DOMID)]
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 -> Maybe ElementDetails
forall a. Maybe a
Nothing
Just DOMNode
a -> ElementDetails -> Maybe ElementDetails
forall a. a -> Maybe a
Just (ElementDetails -> Maybe ElementDetails)
-> ElementDetails -> Maybe ElementDetails
forall a b. (a -> b) -> a -> b
$ DOMID -> DOMID -> DOMNode -> DOMType -> ElementDetails
ElementDetails DOMID
i DOMID
x DOMNode
a (DOMType -> ElementDetails) -> DOMType -> ElementDetails
forall a b. (a -> b) -> a -> b
$ DOMNode -> DOMType
domNodeType DOMNode
a
elementStackFind :: Parser s -> (ElementDetails -> Bool) -> ST s (Maybe ElementDetails)
elementStackFind :: Parser s -> (ElementDetails -> Bool) -> ST s (Maybe ElementDetails)
elementStackFind Parser s
p ElementDetails -> Bool
f = ([ElementDetails] -> Maybe ElementDetails)
-> ST s [ElementDetails] -> ST s (Maybe ElementDetails)
forall (f :: * -> *) a b. Applicative f => (a -> b) -> f a -> f b
liftA ((ElementDetails -> Bool)
-> [ElementDetails] -> Maybe ElementDetails
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a
find ElementDetails -> Bool
f) (ST s [ElementDetails] -> ST s (Maybe ElementDetails))
-> ST s [ElementDetails] -> ST s (Maybe ElementDetails)
forall a b. (a -> b) -> a -> b
$ Parser s -> ST s [ElementDetails]
forall s. Parser s -> ST s [ElementDetails]
elementStackDetails Parser s
p
elementTypesSpecial :: Set DOMType
elementTypesSpecial :: Set DOMType
elementTypesSpecial = [Set DOMType] -> Set DOMType
forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a
Set.unions
[ [DOMType] -> Set DOMType
forall a. Ord a => [a] -> Set a
Set.fromList ([DOMType] -> Set DOMType) -> [DOMType] -> Set DOMType
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" ]
, [DOMType] -> Set DOMType
forall a. Ord a => [a] -> Set a
Set.fromList ([DOMType] -> Set DOMType) -> [DOMType] -> Set DOMType
forall a b. (a -> b) -> a -> b
$ [BS] -> [DOMType]
domTypesMathML
[ BS
"mi", BS
"mo", BS
"mn", BS
"ms", BS
"mtext", BS
"annotation-xml" ]
, [DOMType] -> Set DOMType
forall a. Ord a => [a] -> Set a
Set.fromList ([DOMType] -> Set DOMType) -> [DOMType] -> Set DOMType
forall a b. (a -> b) -> a -> b
$ [BS] -> [DOMType]
domTypesSVG
[ BS
"foreignObject", BS
"desc", BS
"title" ]
]
elementTypesFormatting :: Set DOMType
elementTypesFormatting :: Set DOMType
elementTypesFormatting =
[DOMType] -> Set DOMType
forall a. Ord a => [a] -> Set a
Set.fromList ([DOMType] -> Set DOMType) -> [DOMType] -> Set DOMType
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
| DOMType -> Set DOMType -> Bool
forall a. Ord a => a -> Set a -> Bool
Set.member DOMType
x Set DOMType
elementTypesSpecial = ParserElementCategory
ElementCategorySpecial
| DOMType -> Set DOMType -> Bool
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 ParserElementCategory -> ParserElementCategory -> Bool
forall a. Eq a => a -> a -> Bool
== ParserElementCategory
ElementCategorySpecial
elementInSpecificScope :: Parser s -> Bool -> Set DOMType -> DOMType -> ST s Bool
elementInSpecificScope :: Parser s -> Bool -> Set DOMType -> DOMType -> ST s Bool
elementInSpecificScope Parser s
p Bool
include Set DOMType
types DOMType
target =
[DOMType] -> Bool
f ([DOMType] -> Bool) -> ST s [DOMType] -> ST s Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s [DOMType]
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 DOMType -> DOMType -> Bool
forall a. Eq a => a -> a -> Bool
== DOMType
target = Bool
True
| Bool
include Bool -> Bool -> Bool
forall a. Eq a => a -> a -> Bool
== Bool
True Bool -> Bool -> Bool
&& DOMType -> Set DOMType -> Bool
forall a. Ord a => a -> Set a -> Bool
Set.member DOMType
x Set DOMType
types Bool -> Bool -> Bool
forall a. Eq a => a -> a -> Bool
== Bool
True = Bool
False
| Bool
include Bool -> Bool -> Bool
forall a. Eq a => a -> a -> Bool
== Bool
False Bool -> Bool -> Bool
&& DOMType -> Set DOMType -> Bool
forall a. Ord a => a -> Set a -> Bool
Set.member DOMType
x Set DOMType
types Bool -> Bool -> Bool
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 = [Set DOMType] -> Set DOMType
forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a
Set.unions
[ [DOMType] -> Set DOMType
forall a. Ord a => [a] -> Set a
Set.fromList ([DOMType] -> Set DOMType) -> [DOMType] -> Set DOMType
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" ]
, [DOMType] -> Set DOMType
forall a. Ord a => [a] -> Set a
Set.fromList ([DOMType] -> Set DOMType) -> [DOMType] -> Set DOMType
forall a b. (a -> b) -> a -> b
$ [BS] -> [DOMType]
domTypesMathML
[ BS
"mi", BS
"mo", BS
"mn", BS
"ms", BS
"mtext", BS
"annotation-xml" ]
, [DOMType] -> Set DOMType
forall a. Ord a => [a] -> Set a
Set.fromList ([DOMType] -> Set DOMType) -> [DOMType] -> Set DOMType
forall a b. (a -> b) -> a -> b
$ [BS] -> [DOMType]
domTypesSVG
[ BS
"foreignObject", BS
"desc", BS
"title" ]
]
elementInScope :: Parser s -> DOMType -> ST s Bool
elementInScope :: Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p = Parser s -> Bool -> Set DOMType -> DOMType -> ST s Bool
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 :: Parser s -> DOMType -> ST s Bool
elementInListScope Parser s
p =
Parser s -> Bool -> Set DOMType -> DOMType -> ST s Bool
forall s. Parser s -> Bool -> Set DOMType -> DOMType -> ST s Bool
elementInSpecificScope Parser s
p Bool
True (Set DOMType -> DOMType -> ST s Bool)
-> Set DOMType -> DOMType -> ST s Bool
forall a b. (a -> b) -> a -> b
$
Set DOMType -> Set DOMType -> Set DOMType
forall a. Ord a => Set a -> Set a -> Set a
Set.union Set DOMType
elementScopes (Set DOMType -> Set DOMType) -> Set DOMType -> Set DOMType
forall a b. (a -> b) -> a -> b
$ [DOMType] -> Set DOMType
forall a. Ord a => [a] -> Set a
Set.fromList ([DOMType] -> Set DOMType) -> [DOMType] -> Set DOMType
forall a b. (a -> b) -> a -> b
$
[BS] -> [DOMType]
domTypesHTML [ BS
"ol", BS
"ul" ]
elementInButtonScope :: Parser s -> DOMType -> ST s Bool
elementInButtonScope :: Parser s -> DOMType -> ST s Bool
elementInButtonScope Parser s
p =
Parser s -> Bool -> Set DOMType -> DOMType -> ST s Bool
forall s. Parser s -> Bool -> Set DOMType -> DOMType -> ST s Bool
elementInSpecificScope Parser s
p Bool
True (Set DOMType -> DOMType -> ST s Bool)
-> Set DOMType -> DOMType -> ST s Bool
forall a b. (a -> b) -> a -> b
$
Set DOMType -> Set DOMType -> Set DOMType
forall a. Ord a => Set a -> Set a -> Set a
Set.union Set DOMType
elementScopes (Set DOMType -> Set DOMType) -> Set DOMType -> Set DOMType
forall a b. (a -> b) -> a -> b
$ [DOMType] -> Set DOMType
forall a. Ord a => [a] -> Set a
Set.fromList [ BS -> DOMType
domMakeTypeHTML BS
"button" ]
elementInTableScope :: Parser s -> DOMType -> ST s Bool
elementInTableScope :: Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p =
Parser s -> Bool -> Set DOMType -> DOMType -> ST s Bool
forall s. Parser s -> Bool -> Set DOMType -> DOMType -> ST s Bool
elementInSpecificScope Parser s
p Bool
True (Set DOMType -> DOMType -> ST s Bool)
-> Set DOMType -> DOMType -> ST s Bool
forall a b. (a -> b) -> a -> b
$
[DOMType] -> Set DOMType
forall a. Ord a => [a] -> Set a
Set.fromList ([DOMType] -> Set DOMType) -> [DOMType] -> Set DOMType
forall a b. (a -> b) -> a -> b
$ [BS] -> [DOMType]
domTypesHTML [ BS
"html", BS
"table", BS
"template" ]
elementInSelectScope :: Parser s -> DOMType -> ST s Bool
elementInSelectScope :: Parser s -> DOMType -> ST s Bool
elementInSelectScope Parser s
p =
Parser s -> Bool -> Set DOMType -> DOMType -> ST s Bool
forall s. Parser s -> Bool -> Set DOMType -> DOMType -> ST s Bool
elementInSpecificScope Parser s
p Bool
False (Set DOMType -> DOMType -> ST s Bool)
-> Set DOMType -> DOMType -> ST s Bool
forall a b. (a -> b) -> a -> b
$
[DOMType] -> Set DOMType
forall a. Ord a => [a] -> Set a
Set.fromList ([DOMType] -> Set DOMType) -> [DOMType] -> Set DOMType
forall a b. (a -> b) -> a -> b
$ [BS] -> [DOMType]
domTypesHTML [ BS
"optgroup", BS
"option" ]
newID :: Parser s -> DOMNode -> ST s DOMID
newID :: Parser s -> DOMNode -> ST s DOMID
newID Parser s
p DOMNode
x = do
(DOM
d, DOMID
i) <- (DOM -> DOMNode -> (DOM, DOMID)) -> DOMNode -> DOM -> (DOM, DOMID)
forall a b c. (a -> b -> c) -> b -> a -> c
flip DOM -> DOMNode -> (DOM, DOMID)
domNewID DOMNode
x (DOM -> (DOM, DOMID)) -> ST s DOM -> ST s (DOM, DOMID)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s DOM
forall s. Parser s -> ST s DOM
getDOM Parser s
p
Parser s -> DOM -> ST s ()
forall s. Parser s -> DOM -> ST s ()
setDOM Parser s
p DOM
d
DOMID -> ST s DOMID
forall (f :: * -> *) a. Applicative f => a -> f a
pure DOMID
i
getNode :: Parser s -> DOMID -> ST s (Maybe DOMNode)
getNode :: 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 = (DOM -> DOMID -> Maybe DOMNode) -> DOMID -> DOM -> Maybe DOMNode
forall a b c. (a -> b -> c) -> b -> a -> c
flip DOM -> DOMID -> Maybe DOMNode
domGetNode DOMID
x (DOM -> Maybe DOMNode) -> ST s DOM -> ST s (Maybe DOMNode)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s DOM
forall s. Parser s -> ST s DOM
getDOM Parser s
p
nodeElementName :: Parser s -> DOMID -> ST s BS
nodeElementName :: 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 <- Parser s -> ST s DOM
forall s. Parser s -> ST s DOM
getDOM Parser s
p
BS -> ST s BS
forall (f :: * -> *) a. Applicative f => a -> f a
pure (BS -> ST s BS) -> BS -> ST s BS
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 :: 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)
..} = [DOMID] -> Maybe DOMID
forall a. [a] -> Maybe a
listToMaybe ([DOMID] -> Maybe DOMID)
-> ([DOMID] -> [DOMID]) -> [DOMID] -> Maybe DOMID
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [DOMID] -> [DOMID]
forall a. [a] -> [a]
reverse ([DOMID] -> Maybe DOMID) -> ST s [DOMID] -> ST s (Maybe DOMID)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s [DOMID]
forall s. Parser s -> ST s [DOMID]
elementStack Parser s
p
currentNodeID :: Parser s -> ST s (Maybe DOMID)
currentNodeID :: 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)
..} = [DOMID] -> Maybe DOMID
forall a. [a] -> Maybe a
listToMaybe ([DOMID] -> Maybe DOMID) -> ST s [DOMID] -> ST s (Maybe DOMID)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s [DOMID]
forall s. Parser s -> ST s [DOMID]
elementStack Parser s
p
currentNode :: Parser s -> ST s (Maybe DOMNode)
currentNode :: Parser s -> ST s (Maybe DOMNode)
currentNode Parser s
p = Parser s -> ST s (Maybe DOMID)
forall s. Parser s -> ST s (Maybe DOMID)
currentNodeID Parser s
p ST s (Maybe DOMID)
-> (Maybe DOMID -> ST s (Maybe DOMNode)) -> ST s (Maybe DOMNode)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ST s (Maybe DOMNode)
-> (DOMID -> ST s (Maybe DOMNode))
-> Maybe DOMID
-> ST s (Maybe DOMNode)
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (Maybe DOMNode -> ST s (Maybe DOMNode)
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe DOMNode
forall a. Maybe a
Nothing) (Parser s -> DOMID -> ST s (Maybe DOMNode)
forall s. Parser s -> DOMID -> ST s (Maybe DOMNode)
getNode Parser s
p)
currentNodeHasType :: Parser s -> DOMType -> ST s Bool
currentNodeHasType :: Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
x =
Parser s -> ST s (Maybe DOMNode)
forall s. Parser s -> ST s (Maybe DOMNode)
currentNode Parser s
p ST s (Maybe DOMNode) -> (Maybe DOMNode -> ST s Bool) -> ST s Bool
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Bool -> ST s Bool
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Bool -> ST s Bool)
-> (Maybe DOMNode -> Bool) -> Maybe DOMNode -> ST s Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
Just DOMNode
a -> DOMNode -> DOMType
domNodeType DOMNode
a DOMType -> DOMType -> Bool
forall a. Eq a => a -> a -> Bool
== DOMType
x
Maybe DOMNode
Nothing -> Bool
False
currentNodeHasHTMLType :: Parser s -> BS -> ST s Bool
currentNodeHasHTMLType :: Parser s -> BS -> ST s Bool
currentNodeHasHTMLType Parser s
p = Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p (DOMType -> ST s Bool) -> (BS -> DOMType) -> BS -> ST s Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BS -> DOMType
domMakeTypeHTML
currentNodeHasTypeIn :: Parser s -> [DOMType] -> ST s Bool
currentNodeHasTypeIn :: Parser s -> [DOMType] -> ST s Bool
currentNodeHasTypeIn Parser s
p [DOMType]
x =
Parser s -> ST s (Maybe DOMNode)
forall s. Parser s -> ST s (Maybe DOMNode)
currentNode Parser s
p ST s (Maybe DOMNode) -> (Maybe DOMNode -> ST s Bool) -> ST s Bool
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Bool -> ST s Bool
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Bool -> ST s Bool)
-> (Maybe DOMNode -> Bool) -> Maybe DOMNode -> ST s Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
Just DOMNode
a -> DOMNode -> DOMType
domNodeType DOMNode
a DOMType -> [DOMType] -> Bool
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 :: Parser s -> [BS] -> ST s Bool
currentNodeHasHTMLTypeIn Parser s
p = Parser s -> [DOMType] -> ST s Bool
forall s. Parser s -> [DOMType] -> ST s Bool
currentNodeHasTypeIn Parser s
p ([DOMType] -> ST s Bool)
-> ([BS] -> [DOMType]) -> [BS] -> ST s Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [BS] -> [DOMType]
domTypesHTML
adjustedCurrentNodeID :: Parser s -> ST s (Maybe DOMID)
adjustedCurrentNodeID :: 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 <- STRef s Bool -> ST s Bool
forall s a. STRef s a -> ST s a
rref STRef s Bool
parserFragmentMode
DOMID
n <- Parser s -> ST s DOMID
forall s. Parser s -> ST s DOMID
elementStackSize Parser s
p
if Bool
f Bool -> Bool -> Bool
&& DOMID
n DOMID -> DOMID -> Bool
forall a. Eq a => a -> a -> Bool
== DOMID
1
then STRef s (Maybe DOMID) -> ST s (Maybe DOMID)
forall s a. STRef s a -> ST s a
rref STRef s (Maybe DOMID)
parserContextElement
else Parser s -> ST s (Maybe DOMID)
forall s. Parser s -> ST s (Maybe DOMID)
currentNodeID Parser s
p
adjustedCurrentNode :: Parser s -> ST s (Maybe DOMNode)
adjustedCurrentNode :: Parser s -> ST s (Maybe DOMNode)
adjustedCurrentNode Parser s
p =
Parser s -> ST s (Maybe DOMID)
forall s. Parser s -> ST s (Maybe DOMID)
adjustedCurrentNodeID Parser s
p ST s (Maybe DOMID)
-> (Maybe DOMID -> ST s (Maybe DOMNode)) -> ST s (Maybe DOMNode)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ST s (Maybe DOMNode)
-> (DOMID -> ST s (Maybe DOMNode))
-> Maybe DOMID
-> ST s (Maybe DOMNode)
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (Maybe DOMNode -> ST s (Maybe DOMNode)
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe DOMNode
forall a. Maybe a
Nothing) (Parser s -> DOMID -> ST s (Maybe DOMNode)
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 BS -> BS -> Bool
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
&& BS -> Set BS -> 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 = [BS] -> Set BS
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
&& BS -> Set BS -> 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 BS -> BS -> Bool
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) ->
BS -> Set BS -> Bool
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 = [BS] -> Set BS
forall a. Ord a => [a] -> Set a
Set.fromList [ BS
"foreignObject", BS
"desc", BS
"title" ]
s1 :: Set BS
s1 = [BS] -> Set BS
forall a. Ord a => [a] -> Set a
Set.fromList [ BS
"text/html", BS
"application/xhtml+xml" ]
getDOM :: Parser s -> ST s DOM
getDOM :: 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)
..} = STRef s DOM -> ST s DOM
forall s a. STRef s a -> ST s a
rref STRef s DOM
parserDOM
setDOM :: Parser s -> DOM -> ST s ()
setDOM :: 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)
..} = STRef s DOM -> DOM -> ST s ()
forall s a. STRef s a -> a -> ST s ()
wref STRef s DOM
parserDOM
modifyDOM :: Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM :: 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)
..} = STRef s DOM -> (DOM -> DOM) -> ST s ()
forall s a. STRef s a -> (a -> a) -> ST s ()
uref STRef s DOM
parserDOM
setMode :: Parser s -> ParserMode -> ST s ()
setMode :: 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)
..} = STRef s ParserMode -> ParserMode -> ST s ()
forall s a. STRef s a -> a -> ST s ()
wref STRef s ParserMode
parserInsertionMode
saveMode :: Parser s -> ST s ()
saveMode :: 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)
..} = STRef s ParserMode -> ST s ParserMode
forall s a. STRef s a -> ST s a
rref STRef s ParserMode
parserInsertionMode ST s ParserMode -> (ParserMode -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= STRef s ParserMode -> ParserMode -> ST s ()
forall s a. STRef s a -> a -> ST s ()
wref STRef s ParserMode
parserOriginalMode
restoreMode :: Parser s -> ST s ()
restoreMode :: 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
STRef s ParserMode -> ST s ParserMode
forall s a. STRef s a -> ST s a
rref STRef s ParserMode
parserOriginalMode ST s ParserMode -> (ParserMode -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= STRef s ParserMode -> ParserMode -> ST s ()
forall s a. STRef s a -> a -> ST s ()
wref STRef s ParserMode
parserInsertionMode
STRef s ParserMode -> ParserMode -> ST s ()
forall s a. STRef s a -> a -> ST s ()
wref STRef s ParserMode
parserOriginalMode ParserMode
ModeInitial
setHeadID :: Parser s -> Maybe DOMID -> ST s ()
setHeadID :: 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)
..} = STRef s (Maybe DOMID) -> Maybe DOMID -> ST s ()
forall s a. STRef s a -> a -> ST s ()
wref STRef s (Maybe DOMID)
parserHeadElement
getHeadID :: Parser s -> ST s (Maybe DOMID)
getHeadID :: 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)
..} = STRef s (Maybe DOMID) -> ST s (Maybe DOMID)
forall s a. STRef s a -> ST s a
rref STRef s (Maybe DOMID)
parserHeadElement
getHeadElement :: Parser s -> ST s (Maybe DOMNode)
getHeadElement :: Parser s -> ST s (Maybe DOMNode)
getHeadElement Parser s
p = Parser s -> ST s (Maybe DOMID)
forall s. Parser s -> ST s (Maybe DOMID)
getHeadID Parser s
p ST s (Maybe DOMID)
-> (Maybe DOMID -> ST s (Maybe DOMNode)) -> ST s (Maybe DOMNode)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ST s (Maybe DOMNode)
-> (DOMID -> ST s (Maybe DOMNode))
-> Maybe DOMID
-> ST s (Maybe DOMNode)
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (Maybe DOMNode -> ST s (Maybe DOMNode)
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe DOMNode
forall a. Maybe a
Nothing) (Parser s -> DOMID -> ST s (Maybe DOMNode)
forall s. Parser s -> DOMID -> ST s (Maybe DOMNode)
getNode Parser s
p)
saveHead :: Parser s -> ST s ()
saveHead :: Parser s -> ST s ()
saveHead Parser s
p = Parser s -> ST s (Maybe DOMID)
forall s. Parser s -> ST s (Maybe DOMID)
currentNodeID Parser s
p ST s (Maybe DOMID) -> (Maybe DOMID -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Parser s -> Maybe DOMID -> ST s ()
forall s. Parser s -> Maybe DOMID -> ST s ()
setHeadID Parser s
p
setFormID :: Parser s -> Maybe DOMID -> ST s ()
setFormID :: 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)
..} = STRef s (Maybe DOMID) -> Maybe DOMID -> ST s ()
forall s a. STRef s a -> a -> ST s ()
wref STRef s (Maybe DOMID)
parserFormElement
getFormID :: Parser s -> ST s (Maybe DOMID)
getFormID :: 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)
..} = STRef s (Maybe DOMID) -> ST s (Maybe DOMID)
forall s a. STRef s a -> ST s a
rref STRef s (Maybe DOMID)
parserFormElement
getFormElement :: Parser s -> ST s (Maybe DOMNode)
getFormElement :: Parser s -> ST s (Maybe DOMNode)
getFormElement Parser s
p = Parser s -> ST s (Maybe DOMID)
forall s. Parser s -> ST s (Maybe DOMID)
getFormID Parser s
p ST s (Maybe DOMID)
-> (Maybe DOMID -> ST s (Maybe DOMNode)) -> ST s (Maybe DOMNode)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ST s (Maybe DOMNode)
-> (DOMID -> ST s (Maybe DOMNode))
-> Maybe DOMID
-> ST s (Maybe DOMNode)
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (Maybe DOMNode -> ST s (Maybe DOMNode)
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe DOMNode
forall a. Maybe a
Nothing) (Parser s -> DOMID -> ST s (Maybe DOMNode)
forall s. Parser s -> DOMID -> ST s (Maybe DOMNode)
getNode Parser s
p)
getFormType :: Parser s -> ST s (Maybe DOMType)
getFormType :: 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)
..} =
Parser s -> ST s (Maybe DOMNode)
forall s. Parser s -> ST s (Maybe DOMNode)
getFormElement Parser s
p ST s (Maybe DOMNode)
-> (Maybe DOMNode -> ST s (Maybe DOMType)) -> ST s (Maybe DOMType)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Maybe DOMType -> ST s (Maybe DOMType)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Maybe DOMType -> ST s (Maybe DOMType))
-> (Maybe DOMNode -> Maybe DOMType)
-> Maybe DOMNode
-> ST s (Maybe DOMType)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Maybe DOMType
-> (DOMNode -> Maybe DOMType) -> Maybe DOMNode -> Maybe DOMType
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Maybe DOMType
forall a. Maybe a
Nothing (DOMType -> Maybe DOMType
forall a. a -> Maybe a
Just (DOMType -> Maybe DOMType)
-> (DOMNode -> DOMType) -> DOMNode -> Maybe DOMType
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOMNode -> DOMType
domNodeType)
saveForm :: Parser s -> ST s ()
saveForm :: Parser s -> ST s ()
saveForm Parser s
p = Parser s -> ST s (Maybe DOMID)
forall s. Parser s -> ST s (Maybe DOMID)
currentNodeID Parser s
p ST s (Maybe DOMID) -> (Maybe DOMID -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Parser s -> Maybe DOMID -> ST s ()
forall s. Parser s -> Maybe DOMID -> ST s ()
setFormID Parser s
p
formNotNull :: Parser s -> ST s Bool
formNotNull :: Parser s -> ST s Bool
formNotNull Parser s
p = Maybe DOMID -> Bool
forall a. Maybe a -> Bool
isJust (Maybe DOMID -> Bool) -> ST s (Maybe DOMID) -> ST s Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s (Maybe DOMID)
forall s. Parser s -> ST s (Maybe DOMID)
getFormID Parser s
p
selfClosingInit :: Parser s -> Token -> ST s ()
selfClosingInit :: 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 =
STRef s Bool -> Bool -> ST s ()
forall s a. STRef s a -> a -> ST s ()
wref STRef s Bool
parserSelfClosingFlag (Bool -> ST s ()) -> Bool -> ST s ()
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 :: 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)
..} = STRef s Bool -> Bool -> ST s ()
forall s a. STRef s a -> a -> ST s ()
wref STRef s Bool
parserSelfClosingFlag Bool
False
selfClosingFlag :: Parser s -> ST s Bool
selfClosingFlag :: 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)
..} = STRef s Bool -> ST s Bool
forall s a. STRef s a -> ST s a
rref STRef s Bool
parserSelfClosingFlag
fosterParenting :: Parser s -> ST s Bool
fosterParenting :: 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)
..} = STRef s Bool -> ST s Bool
forall s a. STRef s a -> ST s a
rref STRef s Bool
parserFosterParenting
fosterParentingSet :: Parser s -> ST s ()
fosterParentingSet :: 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)
..} = STRef s Bool -> Bool -> ST s ()
forall s a. STRef s a -> a -> ST s ()
wref STRef s Bool
parserFosterParenting Bool
True
fosterParentingClear :: Parser s -> ST s ()
fosterParentingClear :: 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)
..} = STRef s Bool -> Bool -> ST s ()
forall s a. STRef s a -> a -> ST s ()
wref STRef s Bool
parserFosterParenting Bool
False
frameSetNotOK :: Parser s -> ST s ()
frameSetNotOK :: 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)
..} = STRef s Bool -> Bool -> ST s ()
forall s a. STRef s a -> a -> ST s ()
wref STRef s Bool
parserFrameSetOK Bool
False
iframeSrcDoc :: Parser s -> ST s Bool
iframeSrcDoc :: 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)
..} = STRef s Bool -> ST s Bool
forall s a. STRef s a -> ST s a
rref STRef s Bool
parserIFrameSrcDoc
parserSetDone :: Parser s -> ST s ()
parserSetDone :: 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)
..} = STRef s Bool -> Bool -> ST s ()
forall s a. STRef s a -> a -> ST s ()
wref STRef s Bool
parserDone Bool
True
activeFormatList :: Parser s -> ST s [ParserFormatItem]
activeFormatList :: 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)
..} = STRef s [ParserFormatItem] -> ST s [ParserFormatItem]
forall s a. STRef s a -> ST s a
rref STRef s [ParserFormatItem]
parserActiveFormatList
activeFormatNames :: Parser s -> ST s [BS]
activeFormatNames :: Parser s -> ST s [BS]
activeFormatNames Parser s
p = do
DOM
d <- Parser s -> ST s DOM
forall s. Parser s -> ST s DOM
getDOM Parser s
p
(ParserFormatItem -> BS) -> [ParserFormatItem] -> [BS]
forall a b. (a -> b) -> [a] -> [b]
map (DOM -> ParserFormatItem -> BS
f DOM
d) ([ParserFormatItem] -> [BS])
-> ST s [ParserFormatItem] -> ST s [BS]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s [ParserFormatItem]
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 (DOMNode -> BS) -> DOMNode -> BS
forall a b. (a -> b) -> a -> b
$ Maybe DOMNode -> DOMNode
forall a. HasCallStack => Maybe a -> a
fromJust (Maybe DOMNode -> DOMNode) -> Maybe DOMNode -> DOMNode
forall a b. (a -> b) -> a -> b
$ DOM -> DOMID -> Maybe DOMNode
domGetNode DOM
d DOMID
i
activeFormatAddMarker :: Parser s -> ST s ()
activeFormatAddMarker :: 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)
..} =
STRef s [ParserFormatItem]
-> ([ParserFormatItem] -> [ParserFormatItem]) -> ST s ()
forall s a. STRef s a -> (a -> a) -> ST s ()
uref STRef s [ParserFormatItem]
parserActiveFormatList (ParserFormatItem
ParserFormatMarkerParserFormatItem -> [ParserFormatItem] -> [ParserFormatItem]
forall a. a -> [a] -> [a]
:)
activeFormatAddElement :: Parser s -> Token -> DOMID -> ST s ()
activeFormatAddElement :: 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 <- Parser s -> ST s DOM
forall s. Parser s -> ST s DOM
getDOM Parser s
p
[ParserFormatItem]
a <- Parser s -> ST s [ParserFormatItem]
forall s. Parser s -> ST s [ParserFormatItem]
activeFormatList Parser s
p
let match :: ParserFormatItem -> Bool
match (ParserFormatElement DOMID
y Token
_) = DOM -> DOMID -> DOMID -> Bool
domMatch DOM
d DOMID
x DOMID
y
b :: [ParserFormatItem]
b = (ParserFormatItem -> Bool)
-> [ParserFormatItem] -> [ParserFormatItem]
forall a. (a -> Bool) -> [a] -> [a]
takeWhile (Bool -> Bool
not (Bool -> Bool)
-> (ParserFormatItem -> Bool) -> ParserFormatItem -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ParserFormatItem -> Bool
formatItemIsMarker) [ParserFormatItem]
a
n :: DOMID
n = ((ParserFormatItem -> DOMID -> DOMID)
-> DOMID -> [ParserFormatItem] -> DOMID
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr (\ParserFormatItem
i DOMID
z -> DOMID
z DOMID -> DOMID -> DOMID
forall a. Num a => a -> a -> a
+ if ParserFormatItem -> Bool
match ParserFormatItem
i then DOMID
1 else DOMID
0) DOMID
0 [ParserFormatItem]
b) :: Int
a' :: [ParserFormatItem]
a' = if DOMID
n DOMID -> DOMID -> Bool
forall a. Ord a => a -> a -> Bool
< DOMID
3 then [ParserFormatItem]
a else (ParserFormatItem -> Bool)
-> [ParserFormatItem] -> [ParserFormatItem]
forall a. (a -> Bool) -> [a] -> [a]
removeFirst ParserFormatItem -> Bool
match [ParserFormatItem]
a
e' :: [ParserFormatItem]
e' = DOMID -> Token -> ParserFormatItem
ParserFormatElement DOMID
x Token
t ParserFormatItem -> [ParserFormatItem] -> [ParserFormatItem]
forall a. a -> [a] -> [a]
: [ParserFormatItem]
a'
STRef s [ParserFormatItem] -> [ParserFormatItem] -> ST s ()
forall s a. STRef s a -> a -> ST s ()
wref STRef s [ParserFormatItem]
parserActiveFormatList [ParserFormatItem]
e'
activeFormatAddCurrentNode :: Parser s -> Token -> ST s ()
activeFormatAddCurrentNode :: 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 =
ST s (Maybe DOMID) -> (DOMID -> ST s ()) -> ST s ()
forall (m :: * -> *) a.
Monad m =>
m (Maybe a) -> (a -> m ()) -> m ()
whenJustM (Parser s -> ST s (Maybe DOMID)
forall s. Parser s -> ST s (Maybe DOMID)
currentNodeID Parser s
p) ((DOMID -> ST s ()) -> ST s ()) -> (DOMID -> ST s ()) -> ST s ()
forall a b. (a -> b) -> a -> b
$ Parser s -> Token -> DOMID -> ST s ()
forall s. Parser s -> Token -> DOMID -> ST s ()
activeFormatAddElement Parser s
p Token
t
activeFormatAny :: Parser s -> (DOMNode -> Bool) -> ST s Bool
activeFormatAny :: 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 <- Parser s -> ST s DOM
forall s. Parser s -> ST s DOM
getDOM Parser s
p
[ParserFormatItem]
a <- Parser s -> ST s [ParserFormatItem]
forall s. Parser s -> ST s [ParserFormatItem]
activeFormatList Parser s
p
Bool -> ST s Bool
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Bool -> ST s Bool) -> Bool -> ST s Bool
forall a b. (a -> b) -> a -> b
$
( (DOMNode -> Bool) -> [DOMNode] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any DOMNode -> Bool
f
([DOMNode] -> Bool)
-> ([ParserFormatItem] -> [DOMNode]) -> [ParserFormatItem] -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOM -> [DOMID] -> [DOMNode]
domMapID DOM
d
([DOMID] -> [DOMNode])
-> ([ParserFormatItem] -> [DOMID])
-> [ParserFormatItem]
-> [DOMNode]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ParserFormatItem -> DOMID) -> [ParserFormatItem] -> [DOMID]
forall a b. (a -> b) -> [a] -> [b]
map (\(ParserFormatElement DOMID
x Token
_) -> DOMID
x)
([ParserFormatItem] -> [DOMID])
-> ([ParserFormatItem] -> [ParserFormatItem])
-> [ParserFormatItem]
-> [DOMID]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ParserFormatItem -> Bool)
-> [ParserFormatItem] -> [ParserFormatItem]
forall a. (a -> Bool) -> [a] -> [a]
takeWhile (Bool -> Bool
not (Bool -> Bool)
-> (ParserFormatItem -> Bool) -> ParserFormatItem -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ParserFormatItem -> Bool
formatItemIsMarker)
) [ParserFormatItem]
a
activeFormatContains :: Parser s -> DOMID -> ST s Bool
activeFormatContains :: Parser s -> DOMID -> ST s Bool
activeFormatContains Parser s
p DOMID
x = (ParserFormatItem -> Bool) -> [ParserFormatItem] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any (DOMID -> ParserFormatItem -> Bool
formatItemHasID DOMID
x) ([ParserFormatItem] -> Bool)
-> ST s [ParserFormatItem] -> ST s Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s [ParserFormatItem]
forall s. Parser s -> ST s [ParserFormatItem]
activeFormatList Parser s
p
activeFormatFindTag :: Parser s -> BS -> ST s (Maybe ParserFormatItem)
activeFormatFindTag :: 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 <- Parser s -> ST s DOM
forall s. Parser s -> ST s DOM
getDOM Parser s
p
[ParserFormatItem]
a <- Parser s -> ST s [ParserFormatItem]
forall s. Parser s -> ST s [ParserFormatItem]
activeFormatList Parser s
p
Maybe ParserFormatItem -> ST s (Maybe ParserFormatItem)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Maybe ParserFormatItem -> ST s (Maybe ParserFormatItem))
-> Maybe ParserFormatItem -> ST s (Maybe ParserFormatItem)
forall a b. (a -> b) -> a -> b
$
( (ParserFormatItem -> Bool)
-> [ParserFormatItem] -> Maybe ParserFormatItem
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a
find (DOM -> BS -> ParserFormatItem -> Bool
formatItemHasTag DOM
d BS
x)
([ParserFormatItem] -> Maybe ParserFormatItem)
-> ([ParserFormatItem] -> [ParserFormatItem])
-> [ParserFormatItem]
-> Maybe ParserFormatItem
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ParserFormatItem -> Bool)
-> [ParserFormatItem] -> [ParserFormatItem]
forall a. (a -> Bool) -> [a] -> [a]
takeWhile (Bool -> Bool
not (Bool -> Bool)
-> (ParserFormatItem -> Bool) -> ParserFormatItem -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ParserFormatItem -> Bool
formatItemIsMarker)
) [ParserFormatItem]
a
activeFormatFindToken :: Parser s -> DOMID -> ST s (Maybe Token)
activeFormatFindToken :: 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 =
Parser s -> ST s [ParserFormatItem]
forall s. Parser s -> ST s [ParserFormatItem]
activeFormatList Parser s
p ST s [ParserFormatItem]
-> ([ParserFormatItem] -> ST s (Maybe Token)) -> ST s (Maybe Token)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= [ParserFormatItem] -> ST s (Maybe Token)
forall (f :: * -> *).
Applicative f =>
[ParserFormatItem] -> f (Maybe Token)
f
where
f :: [ParserFormatItem] -> f (Maybe Token)
f [] = Maybe Token -> f (Maybe Token)
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe Token
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 DOMID -> DOMID -> Bool
forall a. Eq a => a -> a -> Bool
== DOMID
i = Maybe Token -> f (Maybe Token)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Maybe Token -> f (Maybe Token)) -> Maybe Token -> f (Maybe Token)
forall a b. (a -> b) -> a -> b
$ Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t
| Bool
otherwise = [ParserFormatItem] -> f (Maybe Token)
f [ParserFormatItem]
xs
activeFormatReconstruct :: Parser s -> ST s ()
activeFormatReconstruct :: Parser s -> ST s ()
activeFormatReconstruct Parser s
p = do
[DOMID]
e <- Parser s -> ST s [DOMID]
forall s. Parser s -> ST s [DOMID]
elementStack Parser s
p
[ParserFormatItem]
a <- Parser s -> ST s [ParserFormatItem]
forall s. Parser s -> ST s [ParserFormatItem]
activeFormatList Parser s
p
case [ParserFormatItem]
a of
[] -> () -> ST s ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
(ParserFormatItem
x:[ParserFormatItem]
xs)
| [DOMID] -> ParserFormatItem -> Bool
isOpen [DOMID]
e ParserFormatItem
x -> () -> ST s ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
| Bool
otherwise -> do
let b :: [ParserFormatItem]
b = [ParserFormatItem] -> [ParserFormatItem]
forall a. [a] -> [a]
reverse ([ParserFormatItem] -> [ParserFormatItem])
-> ([ParserFormatItem] -> [ParserFormatItem])
-> [ParserFormatItem]
-> [ParserFormatItem]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ParserFormatItem -> Bool)
-> [ParserFormatItem] -> [ParserFormatItem]
forall a. (a -> Bool) -> [a] -> [a]
takeWhile (Bool -> Bool
not (Bool -> Bool)
-> (ParserFormatItem -> Bool) -> ParserFormatItem -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [DOMID] -> ParserFormatItem -> Bool
isOpen [DOMID]
e) ([ParserFormatItem] -> [ParserFormatItem])
-> [ParserFormatItem] -> [ParserFormatItem]
forall a b. (a -> b) -> a -> b
$ [ParserFormatItem]
a
a' :: [ParserFormatItem]
a' = DOMID -> [ParserFormatItem] -> [ParserFormatItem]
forall a. DOMID -> [a] -> [a]
drop ([ParserFormatItem] -> DOMID
forall (t :: * -> *) a. Foldable t => t a -> DOMID
length [ParserFormatItem]
b) [ParserFormatItem]
a
Parser s -> [ParserFormatItem] -> [ParserFormatItem] -> ST s ()
forall s.
Parser s -> [ParserFormatItem] -> [ParserFormatItem] -> ST s ()
reopen Parser s
p [ParserFormatItem]
b [ParserFormatItem]
a'
isOpen :: [DOMID] -> ParserFormatItem -> Bool
isOpen :: [DOMID] -> ParserFormatItem -> Bool
isOpen [DOMID]
x = \case
ParserFormatItem
ParserFormatMarker -> Bool
True
ParserFormatElement DOMID
i Token
_ -> DOMID
i DOMID -> [DOMID] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` [DOMID]
x
reopen :: Parser s -> [ParserFormatItem] -> [ParserFormatItem] -> ST s ()
reopen :: 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
[] ->
STRef s [ParserFormatItem] -> [ParserFormatItem] -> ST s ()
forall s a. STRef s a -> a -> ST s ()
wref STRef s [ParserFormatItem]
parserActiveFormatList [ParserFormatItem]
a
((ParserFormatItem
ParserFormatMarker):[ParserFormatItem]
xs) ->
Parser s -> [ParserFormatItem] -> [ParserFormatItem] -> ST s ()
forall s.
Parser s -> [ParserFormatItem] -> [ParserFormatItem] -> ST s ()
reopen Parser s
p [ParserFormatItem]
xs [ParserFormatItem]
a
((ParserFormatElement DOMID
_ Token
t):[ParserFormatItem]
xs) -> do
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
DOMID
i <- Maybe DOMID -> DOMID
forall a. HasCallStack => Maybe a -> a
fromJust (Maybe DOMID -> DOMID) -> ST s (Maybe DOMID) -> ST s DOMID
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s (Maybe DOMID)
forall s. Parser s -> ST s (Maybe DOMID)
currentNodeID Parser s
p
Parser s -> [ParserFormatItem] -> [ParserFormatItem] -> ST s ()
forall s.
Parser s -> [ParserFormatItem] -> [ParserFormatItem] -> ST s ()
reopen Parser s
p [ParserFormatItem]
xs ([ParserFormatItem] -> ST s ()) -> [ParserFormatItem] -> ST s ()
forall a b. (a -> b) -> a -> b
$ DOMID -> Token -> ParserFormatItem
ParserFormatElement DOMID
i Token
t ParserFormatItem -> [ParserFormatItem] -> [ParserFormatItem]
forall a. a -> [a] -> [a]
: [ParserFormatItem]
a
activeFormatClear :: Parser s -> ST s ()
activeFormatClear :: Parser s -> ST s ()
activeFormatClear Parser s
p =
Parser s -> ([ParserFormatItem] -> [ParserFormatItem]) -> ST s ()
forall s.
Parser s -> ([ParserFormatItem] -> [ParserFormatItem]) -> ST s ()
activeFormatModify Parser s
p (([ParserFormatItem] -> [ParserFormatItem]) -> ST s ())
-> ([ParserFormatItem] -> [ParserFormatItem]) -> ST s ()
forall a b. (a -> b) -> a -> b
$ DOMID -> [ParserFormatItem] -> [ParserFormatItem]
forall a. DOMID -> [a] -> [a]
drop DOMID
1 ([ParserFormatItem] -> [ParserFormatItem])
-> ([ParserFormatItem] -> [ParserFormatItem])
-> [ParserFormatItem]
-> [ParserFormatItem]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ParserFormatItem -> Bool)
-> [ParserFormatItem] -> [ParserFormatItem]
forall a. (a -> Bool) -> [a] -> [a]
dropWhile (Bool -> Bool
not (Bool -> Bool)
-> (ParserFormatItem -> Bool) -> ParserFormatItem -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ParserFormatItem -> Bool
formatItemIsMarker)
activeFormatRemove :: Parser s -> DOMID -> ST s ()
activeFormatRemove :: Parser s -> DOMID -> ST s ()
activeFormatRemove Parser s
p DOMID
x =
Parser s -> ([ParserFormatItem] -> [ParserFormatItem]) -> ST s ()
forall s.
Parser s -> ([ParserFormatItem] -> [ParserFormatItem]) -> ST s ()
activeFormatModify Parser s
p (([ParserFormatItem] -> [ParserFormatItem]) -> ST s ())
-> ([ParserFormatItem] -> [ParserFormatItem]) -> ST s ()
forall a b. (a -> b) -> a -> b
$ (ParserFormatItem -> Bool)
-> [ParserFormatItem] -> [ParserFormatItem]
forall a. (a -> Bool) -> [a] -> [a]
filter ((ParserFormatItem -> Bool)
-> [ParserFormatItem] -> [ParserFormatItem])
-> (ParserFormatItem -> Bool)
-> [ParserFormatItem]
-> [ParserFormatItem]
forall a b. (a -> b) -> a -> b
$ Bool -> Bool
not (Bool -> Bool)
-> (ParserFormatItem -> Bool) -> ParserFormatItem -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOMID -> ParserFormatItem -> Bool
formatItemHasID DOMID
x
activeFormatReplace :: Parser s -> DOMID -> DOMID -> ST s ()
activeFormatReplace :: Parser s -> DOMID -> DOMID -> ST s ()
activeFormatReplace Parser s
p DOMID
x DOMID
y =
Parser s -> ([ParserFormatItem] -> [ParserFormatItem]) -> ST s ()
forall s.
Parser s -> ([ParserFormatItem] -> [ParserFormatItem]) -> ST s ()
activeFormatModify Parser s
p (([ParserFormatItem] -> [ParserFormatItem]) -> ST s ())
-> ([ParserFormatItem] -> [ParserFormatItem]) -> ST s ()
forall a b. (a -> b) -> a -> b
$ (ParserFormatItem -> ParserFormatItem)
-> [ParserFormatItem] -> [ParserFormatItem]
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 DOMID -> DOMID -> Bool
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 :: 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)
..} = STRef s [ParserFormatItem]
-> ([ParserFormatItem] -> [ParserFormatItem]) -> ST 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 :: Parser s -> DOMID -> ST s (Maybe DOMID)
activeFormatSucc Parser s
p DOMID
x =
[ParserFormatItem] -> Maybe DOMID
f ([ParserFormatItem] -> Maybe DOMID)
-> ST s [ParserFormatItem] -> ST s (Maybe DOMID)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s [ParserFormatItem]
forall s. Parser s -> ST s [ParserFormatItem]
activeFormatList Parser s
p
where
f :: [ParserFormatItem] -> Maybe DOMID
f [ParserFormatItem]
a = case (ParserFormatItem -> Bool)
-> [ParserFormatItem] -> Maybe ParserFormatItem
forall a. (a -> Bool) -> [a] -> Maybe a
findSucc (DOMID -> ParserFormatItem -> Bool
formatItemHasID DOMID
x) [ParserFormatItem]
a of
Just (ParserFormatElement DOMID
i Token
_) -> DOMID -> Maybe DOMID
forall a. a -> Maybe a
Just DOMID
i
Maybe ParserFormatItem
_otherwise -> Maybe DOMID
forall a. Maybe a
Nothing
activeFormatInsertElement :: Parser s -> DOMID -> Token -> Maybe DOMID -> ST s ()
activeFormatInsertElement :: 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 -> Parser s -> ([ParserFormatItem] -> [ParserFormatItem]) -> ST s ()
forall s.
Parser s -> ([ParserFormatItem] -> [ParserFormatItem]) -> ST s ()
activeFormatModify Parser s
p (([ParserFormatItem] -> [ParserFormatItem]) -> ST s ())
-> ([ParserFormatItem] -> [ParserFormatItem]) -> ST s ()
forall a b. (a -> b) -> a -> b
$ (ParserFormatItem -> Bool)
-> ParserFormatItem -> [ParserFormatItem] -> [ParserFormatItem]
forall a. (a -> Bool) -> a -> [a] -> [a]
insertBefore (DOMID -> ParserFormatItem -> Bool
formatItemHasID DOMID
a) ParserFormatItem
e
Maybe DOMID
Nothing -> Parser s -> ([ParserFormatItem] -> [ParserFormatItem]) -> ST s ()
forall s.
Parser s -> ([ParserFormatItem] -> [ParserFormatItem]) -> ST s ()
activeFormatModify Parser s
p ([ParserFormatItem] -> [ParserFormatItem] -> [ParserFormatItem]
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 DOMID -> DOMID -> Bool
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 BS -> BS -> Bool
forall a. Eq a => a -> a -> Bool
== BS
n
Maybe DOMNode
Nothing -> Bool
False
templateModeCurrent :: Parser s -> ST s (Maybe ParserMode)
templateModeCurrent :: 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)
..} = [ParserMode] -> Maybe ParserMode
forall a. [a] -> Maybe a
listToMaybe ([ParserMode] -> Maybe ParserMode)
-> ST s [ParserMode] -> ST s (Maybe ParserMode)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> STRef s [ParserMode] -> ST s [ParserMode]
forall s a. STRef s a -> ST s a
rref STRef s [ParserMode]
parserTemplateMode
templateModePush :: Parser s -> ParserMode -> ST s ()
templateModePush :: 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 = STRef s [ParserMode] -> ([ParserMode] -> [ParserMode]) -> ST s ()
forall s a. STRef s a -> (a -> a) -> ST s ()
uref STRef s [ParserMode]
parserTemplateMode (ParserMode
xParserMode -> [ParserMode] -> [ParserMode]
forall a. a -> [a] -> [a]
:)
templateModePop :: Parser s -> ST s ()
templateModePop :: 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)
..} =
STRef s [ParserMode] -> ST s [ParserMode]
forall s a. STRef s a -> ST s a
rref STRef s [ParserMode]
parserTemplateMode ST s [ParserMode] -> ([ParserMode] -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
(ParserMode
x:[ParserMode]
xs) -> STRef s [ParserMode] -> [ParserMode] -> ST s ()
forall s a. STRef s a -> a -> ST s ()
wref STRef s [ParserMode]
parserTemplateMode [ParserMode]
xs
[] -> Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p Maybe Token
forall a. Maybe a
Nothing BS
"attempt to pop empty template mode stack"
templateModeCount :: Parser s -> ST s Int
templateModeCount :: 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)
..} = [ParserMode] -> DOMID
forall (t :: * -> *) a. Foldable t => t a -> DOMID
length ([ParserMode] -> DOMID) -> ST s [ParserMode] -> ST s DOMID
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> STRef s [ParserMode] -> ST s [ParserMode]
forall s a. STRef s a -> ST s a
rref STRef s [ParserMode]
parserTemplateMode
appropriateInsertionLocation :: Parser s -> Maybe DOMID -> ST s DOMPos
appropriateInsertionLocation :: 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 -> DOMID -> ST s DOMID
forall (f :: * -> *) a. Applicative f => a -> f a
pure DOMID
a
Maybe DOMID
Nothing -> DOMID -> (DOMID -> DOMID) -> Maybe DOMID -> DOMID
forall b a. b -> (a -> b) -> Maybe a -> b
maybe DOMID
domRoot DOMID -> DOMID
forall a. a -> a
id (Maybe DOMID -> DOMID) -> ST s (Maybe DOMID) -> ST s DOMID
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s (Maybe DOMID)
forall s. Parser s -> ST s (Maybe DOMID)
currentNodeID Parser s
p
Parser s -> DOMID -> ST s (Maybe DOMNode)
forall s. Parser s -> DOMID -> ST s (Maybe DOMNode)
getNode Parser s
p DOMID
target ST s (Maybe DOMNode)
-> (Maybe DOMNode -> ST s DOMPos) -> ST s DOMPos
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Maybe DOMNode
Nothing ->
DOMPos -> ST s DOMPos
forall (f :: * -> *) a. Applicative f => a -> f a
pure (DOMPos -> ST s DOMPos) -> DOMPos -> ST s DOMPos
forall a b. (a -> b) -> a -> b
$ DOMID -> Maybe DOMID -> DOMPos
DOMPos DOMID
domRoot Maybe DOMID
forall a. Maybe a
Nothing
Just DOMNode
n -> do
Bool
f <- Parser s -> ST s Bool
forall s. Parser s -> ST s Bool
fosterParenting Parser s
p
DOMPos
adjusted <-
if Bool
f Bool -> Bool -> Bool
&& DOMNode -> BS
domNodeElementName DOMNode
n BS -> [BS] -> Bool
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 <- Parser s -> (ElementDetails -> Bool) -> ST s (Maybe ElementDetails)
forall s.
Parser s -> (ElementDetails -> Bool) -> ST s (Maybe ElementDetails)
elementStackFind Parser s
p ((ElementDetails -> Bool) -> ST s (Maybe ElementDetails))
-> (ElementDetails -> Bool) -> ST s (Maybe ElementDetails)
forall a b. (a -> b) -> a -> b
$ \ElementDetails
x ->
ElementDetails -> DOMType
elementDetailsType ElementDetails
x DOMType -> DOMType -> Bool
forall a. Eq a => a -> a -> Bool
== BS -> DOMType
domMakeTypeHTML BS
"template"
Maybe ElementDetails
lastTable <- Parser s -> (ElementDetails -> Bool) -> ST s (Maybe ElementDetails)
forall s.
Parser s -> (ElementDetails -> Bool) -> ST s (Maybe ElementDetails)
elementStackFind Parser s
p ((ElementDetails -> Bool) -> ST s (Maybe ElementDetails))
-> (ElementDetails -> Bool) -> ST s (Maybe ElementDetails)
forall a b. (a -> b) -> a -> b
$ \ElementDetails
x ->
ElementDetails -> DOMType
elementDetailsType ElementDetails
x DOMType -> DOMType -> Bool
forall a. Eq a => a -> a -> Bool
== BS -> DOMType
domMakeTypeHTML BS
"table"
let Just (ElementDetails DOMID
i1 DOMID
x1 DOMNode
n1 DOMType
_) = Maybe ElementDetails
lastTemplate
Just (ElementDetails DOMID
i2 DOMID
x2 DOMNode
n2 DOMType
_) = Maybe ElementDetails
lastTable
if | Maybe ElementDetails -> Bool
forall a. Maybe a -> Bool
isJust Maybe ElementDetails
lastTemplate Bool -> Bool -> Bool
&& (Maybe ElementDetails -> Bool
forall a. Maybe a -> Bool
isNothing Maybe ElementDetails
lastTable Bool -> Bool -> Bool
|| (DOMID
i1 DOMID -> DOMID -> Bool
forall a. Ord a => a -> a -> Bool
< DOMID
i2)) ->
DOMPos -> ST s DOMPos
forall (f :: * -> *) a. Applicative f => a -> f a
pure (DOMPos -> ST s DOMPos) -> DOMPos -> ST s DOMPos
forall a b. (a -> b) -> a -> b
$ DOMID -> Maybe DOMID -> DOMPos
DOMPos (DOMNode -> DOMID
domTemplateContents DOMNode
n1) Maybe DOMID
forall a. Maybe a
Nothing
| Maybe ElementDetails -> Bool
forall a. Maybe a -> Bool
isNothing Maybe ElementDetails
lastTable -> do
DOMID
j <- Maybe DOMID -> DOMID
forall a. HasCallStack => Maybe a -> a
fromJust (Maybe DOMID -> DOMID) -> ST s (Maybe DOMID) -> ST s DOMID
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s (Maybe DOMID)
forall s. Parser s -> ST s (Maybe DOMID)
lastNodeID Parser s
p
DOMPos -> ST s DOMPos
forall (f :: * -> *) a. Applicative f => a -> f a
pure (DOMPos -> ST s DOMPos) -> DOMPos -> ST s DOMPos
forall a b. (a -> b) -> a -> b
$ DOMID -> Maybe DOMID -> DOMPos
DOMPos DOMID
j Maybe DOMID
forall a. Maybe a
Nothing
| DOMNode -> DOMID
domNodeParent DOMNode
n2 DOMID -> DOMID -> Bool
forall a. Eq a => a -> a -> Bool
/= DOMID
domNull ->
DOMPos -> ST s DOMPos
forall (f :: * -> *) a. Applicative f => a -> f a
pure (DOMPos -> ST s DOMPos) -> DOMPos -> ST s DOMPos
forall a b. (a -> b) -> a -> b
$ DOMID -> Maybe DOMID -> DOMPos
DOMPos (DOMNode -> DOMID
domNodeParent DOMNode
n2) (Maybe DOMID -> DOMPos) -> Maybe DOMID -> DOMPos
forall a b. (a -> b) -> a -> b
$ DOMID -> Maybe DOMID
forall a. a -> Maybe a
Just DOMID
x2
| Bool
otherwise -> do
DOMID
prev <- Maybe DOMID -> DOMID
forall a. HasCallStack => Maybe a -> a
fromJust (Maybe DOMID -> DOMID) -> ST s (Maybe DOMID) -> ST s DOMID
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> DOMID -> ST s (Maybe DOMID)
forall s. Parser s -> DOMID -> ST s (Maybe DOMID)
elementStackSucc Parser s
p DOMID
x2
DOMPos -> ST s DOMPos
forall (f :: * -> *) a. Applicative f => a -> f a
pure (DOMPos -> ST s DOMPos) -> DOMPos -> ST s DOMPos
forall a b. (a -> b) -> a -> b
$ DOMID -> Maybe DOMID -> DOMPos
DOMPos DOMID
prev Maybe DOMID
forall a. Maybe a
Nothing
else
DOMPos -> ST s DOMPos
forall (f :: * -> *) a. Applicative f => a -> f a
pure (DOMPos -> ST s DOMPos) -> DOMPos -> ST s DOMPos
forall a b. (a -> b) -> a -> b
$ DOMID -> Maybe DOMID -> DOMPos
DOMPos DOMID
target Maybe DOMID
forall a. Maybe a
Nothing
Parser s -> DOMID -> ST s (Maybe DOMNode)
forall s. Parser s -> DOMID -> ST s (Maybe DOMNode)
getNode Parser s
p (DOMPos -> DOMID
domPosParent DOMPos
adjusted) ST s (Maybe DOMNode)
-> (Maybe DOMNode -> ST s DOMPos) -> ST s DOMPos
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
..} ->
DOMPos -> ST s DOMPos
forall (f :: * -> *) a. Applicative f => a -> f a
pure (DOMPos -> ST s DOMPos) -> DOMPos -> ST s DOMPos
forall a b. (a -> b) -> a -> b
$ DOMID -> Maybe DOMID -> DOMPos
DOMPos DOMID
domTemplateContents Maybe DOMID
forall a. Maybe a
Nothing
Maybe DOMNode
_ ->
DOMPos -> ST s DOMPos
forall (f :: * -> *) a. Applicative f => a -> f a
pure DOMPos
adjusted
insertionLocation :: Parser s -> ST s DOMPos
insertionLocation :: Parser s -> ST s DOMPos
insertionLocation Parser s
p = Parser s -> Maybe DOMID -> ST s DOMPos
forall s. Parser s -> Maybe DOMID -> ST s DOMPos
appropriateInsertionLocation Parser s
p Maybe DOMID
forall a. Maybe a
Nothing
createElementForToken :: Parser s -> Token -> HTMLNamespace -> ST s DOMID
createElementForToken :: Parser s -> Token -> HTMLNamespace -> ST s DOMID
createElementForToken Parser s
p Token
t HTMLNamespace
s
| Token -> BS
tStartName Token
t BS -> BS -> Bool
forall a. Eq a => a -> a -> Bool
== BS
"template" = do
DOMID
i <- Parser s -> DOMNode -> ST s DOMID
forall s. Parser s -> DOMNode -> ST s DOMID
newID Parser s
p (DOMNode -> ST s DOMID) -> DOMNode -> ST s DOMID
forall a b. (a -> b) -> a -> b
$ DOMNode
domDefaultFragment
DOMID
j <- Parser s -> DOMNode -> ST s DOMID
forall s. Parser s -> DOMNode -> ST s DOMID
newID Parser s
p (DOMNode -> ST s DOMID) -> DOMNode -> ST s DOMID
forall a b. (a -> b) -> a -> b
$ DOMNode
domDefaultTemplate
{ domTemplateNamespace :: HTMLNamespace
domTemplateNamespace = HTMLNamespace
s
, domTemplateContents :: DOMID
domTemplateContents = DOMID
i
}
Parser s -> (DOM -> DOM) -> ST s ()
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p ((DOM -> DOM) -> ST s ()) -> (DOM -> DOM) -> ST s ()
forall a b. (a -> b) -> a -> b
$ DOMID -> DOMID -> DOM -> DOM
domSetParent DOMID
i DOMID
j
DOMID -> ST s DOMID
forall (f :: * -> *) a. Applicative f => a -> f a
pure DOMID
j
| Bool
otherwise = do
DOMID
i <- Parser s -> DOMNode -> ST s DOMID
forall s. Parser s -> DOMNode -> ST s DOMID
newID Parser s
p (DOMNode -> ST s DOMID) -> DOMNode -> ST s DOMID
forall a b. (a -> b) -> a -> b
$ DOMNode
domDefaultElement
{ domElementName :: BS
domElementName = Token -> BS
tStartName Token
t
, domElementAttributes :: Seq DOMAttr
domElementAttributes = [DOMAttr] -> Seq DOMAttr
forall a. [a] -> Seq a
Seq.fromList ([DOMAttr] -> Seq DOMAttr) -> [DOMAttr] -> Seq DOMAttr
forall a b. (a -> b) -> a -> b
$ (TAttr -> DOMAttr) -> [TAttr] -> [DOMAttr]
forall a b. (a -> b) -> [a] -> [b]
map TAttr -> DOMAttr
f (Token -> [TAttr]
tStartAttr Token
t)
, domElementNamespace :: HTMLNamespace
domElementNamespace = HTMLNamespace
s
}
DOMID -> ST s DOMID
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 :: Parser s -> HTMLNamespace -> Token -> ST s ()
insertForeignElement Parser s
p HTMLNamespace
n =
(Token -> ST s ()) -> Token -> ST s ()
forall s. (Token -> ST s ()) -> Token -> ST s ()
withStartToken ((Token -> ST s ()) -> Token -> ST s ())
-> (Token -> ST s ()) -> Token -> ST s ()
forall a b. (a -> b) -> a -> b
$ \Token
t -> do
DOMID
i <- Parser s -> Token -> HTMLNamespace -> ST s DOMID
forall s. Parser s -> Token -> HTMLNamespace -> ST s DOMID
createElementForToken Parser s
p Token
t HTMLNamespace
n
DOMPos
x <- Parser s -> ST s DOMPos
forall s. Parser s -> ST s DOMPos
insertionLocation Parser s
p
Parser s -> (DOM -> DOM) -> ST s ()
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p ((DOM -> DOM) -> ST s ()) -> (DOM -> DOM) -> ST s ()
forall a b. (a -> b) -> a -> b
$ DOMPos -> DOMID -> DOM -> DOM
domInsert DOMPos
x DOMID
i
Parser s -> DOMID -> ST s ()
forall s. Parser s -> DOMID -> ST s ()
elementStackPush Parser s
p DOMID
i
insertHtmlElement :: Parser s -> Token -> ST s ()
insertHtmlElement :: Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p = Parser s -> HTMLNamespace -> Token -> ST s ()
forall s. Parser s -> HTMLNamespace -> Token -> ST s ()
insertForeignElement Parser s
p HTMLNamespace
HTMLNamespaceHTML
insertMathMLElement :: Parser s -> Token -> ST s ()
insertMathMLElement :: Parser s -> Token -> ST s ()
insertMathMLElement Parser s
p = Parser s -> HTMLNamespace -> Token -> ST s ()
forall s. Parser s -> HTMLNamespace -> Token -> ST s ()
insertForeignElement Parser s
p HTMLNamespace
HTMLNamespaceMathML
insertSvgElement :: Parser s -> Token -> ST s ()
insertSvgElement :: Parser s -> Token -> ST s ()
insertSvgElement Parser s
p = Parser s -> HTMLNamespace -> Token -> ST s ()
forall s. Parser s -> HTMLNamespace -> Token -> ST s ()
insertForeignElement Parser s
p HTMLNamespace
HTMLNamespaceSVG
insertHtmlElementNamed :: Parser s -> BS -> ST s ()
insertHtmlElementNamed :: Parser s -> BS -> ST s ()
insertHtmlElementNamed Parser s
p BS
x = Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p (Token -> ST s ()) -> Token -> ST s ()
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 = (TAttr -> TAttr) -> [TAttr] -> [TAttr]
forall a b. (a -> b) -> [a] -> [b]
map TAttr -> TAttr
f ([TAttr] -> [TAttr]) -> [TAttr] -> [TAttr]
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 (BS -> BS
forall p. (Eq p, IsString p) => p -> p
g BS
n) BS
v HTMLAttrNamespace
s
g :: p -> p
g p
x = if p
x p -> p -> Bool
forall a. Eq a => a -> a -> Bool
== p
"definitionurl" then p
"definitionUrl" else p
x
adjustAttrSVG :: Token -> Token
adjustAttrSVG :: Token -> Token
adjustAttrSVG Token
t =
Token
t { tStartAttr :: [TAttr]
tStartAttr = (TAttr -> TAttr) -> [TAttr] -> [TAttr]
forall a b. (a -> b) -> [a] -> [b]
map TAttr -> TAttr
f ([TAttr] -> [TAttr]) -> [TAttr] -> [TAttr]
forall a b. (a -> b) -> a -> b
$ Token -> [TAttr]
tStartAttr Token
t }
where
f :: TAttr -> TAttr
f t :: TAttr
t@(TAttr BS
n BS
v HTMLAttrNamespace
s) =
case BS -> Map BS BS -> Maybe BS
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
t
adjustAttrForeign :: Token -> Token
adjustAttrForeign :: Token -> Token
adjustAttrForeign Token
t =
Token
t { tStartAttr :: [TAttr]
tStartAttr = (TAttr -> TAttr) -> [TAttr] -> [TAttr]
forall a b. (a -> b) -> [a] -> [b]
map TAttr -> TAttr
f ([TAttr] -> [TAttr]) -> [TAttr] -> [TAttr]
forall a b. (a -> b) -> a -> b
$ Token -> [TAttr]
tStartAttr Token
t }
where
f :: TAttr -> TAttr
f t :: TAttr
t@(TAttr BS
n BS
v HTMLAttrNamespace
s) =
case BS
-> Map BS (BS, HTMLAttrNamespace) -> Maybe (BS, HTMLAttrNamespace)
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
t
adjustElemSVG :: Token -> Token
adjustElemSVG :: Token -> Token
adjustElemSVG Token
t =
case BS -> Map BS BS -> Maybe BS
forall k a. Ord k => k -> Map k a -> Maybe a
Map.lookup (Token -> BS
tStartName Token
t) Map BS BS
svgElementMap of
Just BS
x -> Token
t { tStartName :: BS
tStartName = BS
x }
Maybe BS
Nothing -> Token
t
svgAttributeMap :: Map BS BS
svgAttributeMap :: Map BS BS
svgAttributeMap = [(BS, BS)] -> Map BS BS
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 = [(BS, BS)] -> Map BS BS
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 = [(BS, (BS, HTMLAttrNamespace))] -> Map BS (BS, HTMLAttrNamespace)
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 :: 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 = Parser s -> (DOM -> DOM) -> ST s ()
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p ((DOM -> DOM) -> ST s ()) -> (DOM -> DOM) -> ST s ()
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 :: 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 <- Parser s -> ST s DOM
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
Parser s -> DOM -> ST s ()
forall s. Parser s -> DOM -> ST s ()
setDOM Parser s
p DOM
d'
DOMID -> ST s DOMID
forall (f :: * -> *) a. Applicative f => a -> f a
pure DOMID
j
insertDocumentNode :: Parser s -> DOMID -> ST s ()
insertDocumentNode :: 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)
..} = Parser s -> DOMPos -> DOMID -> ST s ()
forall s. Parser s -> DOMPos -> DOMID -> ST s ()
insertNode Parser s
p DOMPos
domRootPos
insertNewDocumentNode :: Parser s -> DOMNode -> ST s ()
insertNewDocumentNode :: 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)
..} = ST s DOMID -> ST s ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (ST s DOMID -> ST s ())
-> (DOMNode -> ST s DOMID) -> DOMNode -> ST s ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Parser s -> DOMPos -> DOMNode -> ST s DOMID
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 =
DOMNode -> ST s DOMNode
forall (f :: * -> *) a. Applicative f => a -> f a
pure (DOMNode -> ST s DOMNode) -> DOMNode -> ST s DOMNode
forall a b. (a -> b) -> a -> b
$ DOMNode
domDefaultComment { domCommentData :: BS
domCommentData = Token -> BS
tCommentData Token
t }
doctypeMake :: Parser s -> Token -> ST s DOMNode
doctypeMake :: 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)
..} 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
..} =
DOMNode -> ST s DOMNode
forall (f :: * -> *) a. Applicative f => a -> f a
pure (DOMNode -> ST s DOMNode) -> DOMNode -> ST s DOMNode
forall a b. (a -> b) -> a -> b
$ DOMNode
domDefaultDoctype
{ domDoctypeName :: BS
domDoctypeName = BS
tDoctypeName
, domDoctypePublicID :: Maybe BS
domDoctypePublicID = Maybe BS
tDoctypePublic
, domDoctypeSystemID :: Maybe BS
domDoctypeSystemID = Maybe BS
tDoctypeSystem
}
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 =
Parser s -> ST s DOMPos
forall s. Parser s -> ST s DOMPos
insertionLocation Parser s
p ST s DOMPos -> (DOMPos -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \DOMPos
x ->
Parser s -> Token -> ST s DOMNode
forall s. Parser s -> Token -> ST s DOMNode
commentMake Parser s
p Token
t ST s DOMNode -> (DOMNode -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ST s DOMID -> ST s ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (ST s DOMID -> ST s ())
-> (DOMNode -> ST s DOMID) -> DOMNode -> ST s ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Parser s -> DOMPos -> DOMNode -> ST s DOMID
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 =
Parser s -> Token -> ST s DOMNode
forall s. Parser s -> Token -> ST s DOMNode
commentMake Parser s
p Token
t ST s DOMNode -> (DOMNode -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ST s DOMID -> ST s ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (ST s DOMID -> ST s ())
-> (DOMNode -> ST s DOMID) -> DOMNode -> ST s ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Parser s -> DOMPos -> DOMNode -> ST s DOMID
forall s. Parser s -> DOMPos -> DOMNode -> ST s DOMID
insertNewNode Parser s
p DOMPos
domRootPos
insertChar :: Parser s -> Token -> ST s ()
insertChar :: 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)
..} =
(Word8 -> ST s ()) -> Token -> ST s ()
forall s. (Word8 -> ST s ()) -> Token -> ST s ()
withCharToken ((Word8 -> ST s ()) -> Token -> ST s ())
-> (Word8 -> ST s ()) -> Token -> ST s ()
forall a b. (a -> b) -> a -> b
$ \Word8
w -> do
DOMPos
pos <- Parser s -> ST s DOMPos
forall s. Parser s -> ST s DOMPos
insertionLocation Parser s
p
let i :: DOMID
i = DOMPos -> DOMID
domPosParent DOMPos
pos
Bool -> ST s () -> ST s ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (DOMID
i DOMID -> DOMID -> Bool
forall a. Eq a => a -> a -> Bool
/= DOMID
domRoot) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
DOM
d <- Parser s -> ST s DOM
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 <- Parser s -> DOMPos -> DOMNode -> ST s DOMID
forall s. Parser s -> DOMPos -> DOMNode -> ST s DOMID
insertNewNode Parser s
p DOMPos
pos DOMNode
domDefaultText
Parser s -> DOMID -> Word8 -> ST s ()
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
..} ->
Parser s -> DOMID -> Word8 -> ST s ()
forall s. Parser s -> DOMID -> Word8 -> ST s ()
textMapAppend Parser s
p DOMID
domTextID Word8
w
Just DOMNode
n -> do
DOMID
j <- Parser s -> DOMPos -> DOMNode -> ST s DOMID
forall s. Parser s -> DOMPos -> DOMNode -> ST s DOMID
insertNewNode Parser s
p DOMPos
pos DOMNode
domDefaultText
Parser s -> DOMID -> Word8 -> ST s ()
forall s. Parser s -> DOMID -> Word8 -> ST s ()
textMapAppend Parser s
p DOMID
j Word8
w
Maybe DOMNode
Nothing ->
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p Maybe Token
forall a. Maybe a
Nothing (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"insert char bad id: " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> String -> BS
bcPack (DOMID -> String
forall a. Show a => a -> String
show DOMID
x)
textMapAppend :: Parser s -> DOMID -> Word8 -> ST s ()
textMapAppend :: 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 <- STRef s (IntMap (STRef s (Buffer s)))
-> ST s (IntMap (STRef s (Buffer s)))
forall s a. STRef s a -> ST s a
rref STRef s (IntMap (STRef s (Buffer s)))
parserTextMap
case DOMID -> IntMap (STRef s (Buffer s)) -> Maybe (STRef s (Buffer s))
forall a. DOMID -> IntMap a -> Maybe a
IntMap.lookup DOMID
i IntMap (STRef s (Buffer s))
m of
Just STRef s (Buffer s)
b ->
Word8 -> STRef s (Buffer s) -> ST s ()
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 <- ST s (STRef s (Buffer s))
forall s. ST s (STRef s (Buffer s))
bufferNew
Word8 -> STRef s (Buffer s) -> ST s ()
forall s. Word8 -> STRef s (Buffer s) -> ST s ()
bufferAppend Word8
w STRef s (Buffer s)
b
STRef s (IntMap (STRef s (Buffer s)))
-> IntMap (STRef s (Buffer s)) -> ST s ()
forall s a. STRef s a -> a -> ST s ()
wref STRef s (IntMap (STRef s (Buffer s)))
parserTextMap (IntMap (STRef s (Buffer s)) -> ST s ())
-> IntMap (STRef s (Buffer s)) -> ST s ()
forall a b. (a -> b) -> a -> b
$ DOMID
-> STRef s (Buffer s)
-> IntMap (STRef s (Buffer s))
-> IntMap (STRef s (Buffer s))
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 :: 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 <- STRef s (IntMap (STRef s (Buffer s)))
-> ST s (IntMap (STRef s (Buffer s)))
forall s a. STRef s a -> ST s a
rref STRef s (IntMap (STRef s (Buffer s)))
parserTextMap
case DOMID -> IntMap (STRef s (Buffer s)) -> Maybe (STRef s (Buffer s))
forall a. DOMID -> IntMap a -> Maybe a
IntMap.lookup DOMID
i IntMap (STRef s (Buffer s))
m of
Just STRef s (Buffer s)
b -> STRef s (Buffer s) -> ST s BS
forall s. STRef s (Buffer s) -> ST s BS
bufferPack STRef s (Buffer s)
b
Maybe (STRef s (Buffer s))
Nothing -> BS -> ST s BS
forall (f :: * -> *) a. Applicative f => a -> f a
pure BS
bsEmpty
textMapDOM :: Parser s -> ST s DOM
textMapDOM :: 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
..} <- Parser s -> ST s DOM
forall s. Parser s -> ST s DOM
getDOM Parser s
p
IntMap BS
m <- STRef s (IntMap (STRef s (Buffer s)))
-> ST s (IntMap (STRef s (Buffer s)))
forall s a. STRef s a -> ST s a
rref STRef s (IntMap (STRef s (Buffer s)))
parserTextMap ST s (IntMap (STRef s (Buffer s)))
-> (IntMap (STRef s (Buffer s)) -> ST s (IntMap BS))
-> ST s (IntMap BS)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (STRef s (Buffer s) -> ST s BS)
-> IntMap (STRef s (Buffer s)) -> ST s (IntMap BS)
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM STRef s (Buffer s) -> ST s BS
forall s. STRef s (Buffer s) -> ST s BS
bufferPack
let f :: DOMID -> BS
f DOMID
x = BS -> DOMID -> IntMap BS -> BS
forall a. a -> DOMID -> IntMap a -> a
IntMap.findWithDefault BS
bsEmpty DOMID
x IntMap BS
m
a :: DOMMap
a = ((DOMID -> DOMNode -> DOMNode) -> DOMMap -> DOMMap)
-> DOMMap -> (DOMID -> DOMNode -> DOMNode) -> DOMMap
forall a b c. (a -> b -> c) -> b -> a -> c
flip (DOMID -> DOMNode -> DOMNode) -> DOMMap -> DOMMap
forall a b. (DOMID -> a -> b) -> IntMap a -> IntMap b
IntMap.mapWithKey DOMMap
domNodes ((DOMID -> DOMNode -> DOMNode) -> DOMMap)
-> (DOMID -> DOMNode -> DOMNode) -> DOMMap
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
DOM -> ST s DOM
forall (f :: * -> *) a. Applicative f => a -> f a
pure (DOM -> ST s DOM) -> DOM -> ST s DOM
forall a b. (a -> b) -> a -> b
$ DOMMap -> DOMID -> DOM
DOM DOMMap
a DOMID
domNextID
withStartToken :: (Token -> ST s ()) -> Token -> ST s ()
withStartToken :: (Token -> ST s ()) -> Token -> ST s ()
withStartToken Token -> ST s ()
f = \case
t :: Token
t@TStart {} -> Token -> ST s ()
f Token
t
Token
_otherwise -> () -> ST s ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
withCharToken :: (Word8 -> ST s ()) -> Token -> ST s ()
withCharToken :: (Word8 -> ST s ()) -> Token -> ST s ()
withCharToken Word8 -> ST s ()
f = \case
TChar Word8
w -> Word8 -> ST s ()
f Word8
w
Token
_otherwise -> () -> ST s ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
parserLexerUpdate :: Parser s -> (Lexer s -> ST s ()) -> ST s ()
parserLexerUpdate :: 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 = STRef s (Lexer s) -> ST s (Lexer s)
forall s a. STRef s a -> ST s a
rref STRef s (Lexer s)
parserLexer ST s (Lexer s) -> (Lexer s -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Lexer s -> ST s ()
f
parserSkipNextLF :: Parser s -> ST s ()
parserSkipNextLF :: Parser s -> ST s ()
parserSkipNextLF Parser s
p = Parser s -> (Lexer s -> ST s ()) -> ST s ()
forall s. Parser s -> (Lexer s -> ST s ()) -> ST s ()
parserLexerUpdate Parser s
p Lexer s -> ST s ()
forall s. Lexer s -> ST s ()
lexerSkipNextLF
parserSetRCDATA :: Parser s -> ST s ()
parserSetRCDATA :: Parser s -> ST s ()
parserSetRCDATA Parser s
p = Parser s -> (Lexer s -> ST s ()) -> ST s ()
forall s. Parser s -> (Lexer s -> ST s ()) -> ST s ()
parserLexerUpdate Parser s
p Lexer s -> ST s ()
forall s. Lexer s -> ST s ()
lexerSetRCDATA
parserSetRAWTEXT :: Parser s -> ST s ()
parserSetRAWTEXT :: Parser s -> ST s ()
parserSetRAWTEXT Parser s
p = Parser s -> (Lexer s -> ST s ()) -> ST s ()
forall s. Parser s -> (Lexer s -> ST s ()) -> ST s ()
parserLexerUpdate Parser s
p Lexer s -> ST s ()
forall s. Lexer s -> ST s ()
lexerSetRAWTEXT
parserSetPLAINTEXT :: Parser s -> ST s ()
parserSetPLAINTEXT :: Parser s -> ST s ()
parserSetPLAINTEXT Parser s
p = Parser s -> (Lexer s -> ST s ()) -> ST s ()
forall s. Parser s -> (Lexer s -> ST s ()) -> ST s ()
parserLexerUpdate Parser s
p Lexer s -> ST s ()
forall s. Lexer s -> ST s ()
lexerSetPLAINTEXT
parserSetScriptData :: Parser s -> ST s ()
parserSetScriptData :: Parser s -> ST s ()
parserSetScriptData Parser s
p = Parser s -> (Lexer s -> ST s ()) -> ST s ()
forall s. Parser s -> (Lexer s -> ST s ()) -> ST s ()
parserLexerUpdate Parser s
p Lexer s -> ST s ()
forall s. Lexer s -> ST s ()
lexerSetScriptData
insertElementRCDATA :: Parser s -> Token -> ST s ()
insertElementRCDATA :: Parser s -> Token -> ST s ()
insertElementRCDATA Parser s
p Token
t = do
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
parserSetRCDATA Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
saveMode Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeText
insertElementRAWTEXT :: Parser s -> Token -> ST s ()
insertElementRAWTEXT :: Parser s -> Token -> ST s ()
insertElementRAWTEXT Parser s
p Token
t = do
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
parserSetRAWTEXT Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
saveMode Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeText
generateImpliedEndTags :: Parser s -> ST s ()
generateImpliedEndTags :: Parser s -> ST s ()
generateImpliedEndTags Parser s
p = Parser s -> BS -> ST s ()
forall s. Parser s -> BS -> ST s ()
generateImpliedEndTagsExcept Parser s
p BS
bsEmpty
generateImpliedEndTagsExcept :: Parser s -> BS -> ST s ()
generateImpliedEndTagsExcept :: Parser s -> BS -> ST s ()
generateImpliedEndTagsExcept Parser s
p BS
x =
Parser s -> (DOMNode -> Bool) -> ST s ()
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopWhile Parser s
p ((DOMNode -> Bool) -> ST s ()) -> (DOMNode -> Bool) -> ST s ()
forall a b. (a -> b) -> a -> b
$ [BS] -> DOMNode -> Bool
elementNameIn ([BS] -> DOMNode -> Bool) -> [BS] -> DOMNode -> Bool
forall a b. (a -> b) -> a -> b
$
(BS -> Bool) -> [BS] -> [BS]
forall a. (a -> Bool) -> [a] -> [a]
filter (BS -> BS -> Bool
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 :: Parser s -> ST s ()
generateImpliedEndTagsThoroughly Parser s
p =
Parser s -> (DOMNode -> Bool) -> ST s ()
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopWhile Parser s
p ((DOMNode -> Bool) -> ST s ()) -> (DOMNode -> Bool) -> ST s ()
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 :: 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)
..} =
Parser s -> ST s [DOMNode]
forall s. Parser s -> ST s [DOMNode]
elementStackNodes Parser s
p ST s [DOMNode] -> ([DOMNode] -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= [DOMNode] -> ST s ()
f
where
f :: [DOMNode] -> ST s ()
f [] = () -> ST s ()
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'DOMNode -> [DOMNode] -> [DOMNode]
forall a. a -> [a] -> [a]
:[DOMNode]
xs)
(BS
"td", Bool
False) -> Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInCell
(BS
"th", Bool
False) -> Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInCell
(BS
"tr", Bool
_) -> Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInRow
(BS
"tbody", Bool
_) -> Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTableBody
(BS
"thead", Bool
_) -> Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTableBody
(BS
"tfoot", Bool
_) -> Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTableBody
(BS
"caption", Bool
_) -> Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInCaption
(BS
"colgroup", Bool
_) -> Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInColumnGroup
(BS
"table", Bool
_) -> Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTable
(BS
"head", Bool
False) -> Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInHead
(BS
"body", Bool
_) -> Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInBody
(BS
"frameset", Bool
_) -> Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInFrameset
(BS
"template", Bool
_) -> Parser s -> ST s (Maybe ParserMode)
forall s. Parser s -> ST s (Maybe ParserMode)
templateModeCurrent Parser s
p ST s (Maybe ParserMode) -> (Maybe ParserMode -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Just ParserMode
m -> Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
m
Maybe ParserMode
Nothing -> () -> ST s ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
(BS
"html", Bool
_) -> Parser s -> ST s (Maybe DOMID)
forall s. Parser s -> ST s (Maybe DOMID)
getHeadID Parser s
p ST s (Maybe DOMID) -> (Maybe DOMID -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Maybe DOMID
Nothing -> Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeBeforeHead
Just DOMID
_ -> Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeAfterHead
(BS
_, Bool
True) -> Parser s -> ParserMode -> ST s ()
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 = [DOMNode] -> DOMID
forall (t :: * -> *) a. Foldable t => t a -> DOMID
length [DOMNode]
xs DOMID -> DOMID -> Bool
forall a. Eq a => a -> a -> Bool
== DOMID
0
node :: ST s DOMNode
node = do
Bool
a <- STRef s Bool -> ST s Bool
forall s a. STRef s a -> ST s a
rref STRef s Bool
parserFragmentMode
Maybe DOMID
c <- STRef s (Maybe DOMID) -> ST s (Maybe DOMID)
forall s a. STRef s a -> ST s a
rref STRef s (Maybe DOMID)
parserContextElement
Maybe DOMNode
n <- Parser s -> DOMID -> ST s (Maybe DOMNode)
forall s. Parser s -> DOMID -> ST s (Maybe DOMNode)
getNode Parser s
p (DOMID -> ST s (Maybe DOMNode)) -> DOMID -> ST s (Maybe DOMNode)
forall a b. (a -> b) -> a -> b
$ Maybe DOMID -> DOMID
forall a. HasCallStack => Maybe a -> a
fromJust Maybe DOMID
c
DOMNode -> ST s DOMNode
forall (f :: * -> *) a. Applicative f => a -> f a
pure (DOMNode -> ST s DOMNode) -> DOMNode -> ST s DOMNode
forall a b. (a -> b) -> a -> b
$
if Bool
lastNode Bool -> Bool -> Bool
&& Bool
a Bool -> Bool -> Bool
&& Maybe DOMID -> Bool
forall a. Maybe a -> Bool
isJust Maybe DOMID
c
then Maybe DOMNode -> DOMNode
forall a. HasCallStack => Maybe a -> a
fromJust (Maybe DOMNode -> DOMNode) -> Maybe DOMNode -> DOMNode
forall a b. (a -> b) -> a -> b
$ Maybe DOMNode
n
else DOMNode
x
g :: [DOMNode] -> ST s ()
g (DOMNode
x:[]) =
Parser s -> ParserMode -> ST s ()
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" -> Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInSelect
BS
"table" -> Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInSelectInTable
BS
_otherwise -> [DOMNode] -> ST s ()
g (DOMNode
yDOMNode -> [DOMNode] -> [DOMNode]
forall a. a -> [a] -> [a]
:[DOMNode]
ys)
closeElementP :: Parser s -> ST s ()
closeElementP :: Parser s -> ST s ()
closeElementP Parser s
p = do
let t :: DOMType
t = BS -> DOMType
domMakeTypeHTML BS
"p"
Parser s -> BS -> ST s ()
forall s. Parser s -> BS -> ST s ()
generateImpliedEndTagsExcept Parser s
p BS
"p"
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
t) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p Maybe Token
forall a. Maybe a
Nothing BS
"current node not p when closing p element"
Parser s -> DOMType -> ST s ()
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
t
data ParserAdoptionAgency s = ParserAdoptionAgency
{ ParserAdoptionAgency s -> BS
aaSubject :: BS
, ParserAdoptionAgency s -> DOMID
aaOuterLoopCount :: Int
, ParserAdoptionAgency s -> DOMID
aaInnerLoopCount :: Int
, ParserAdoptionAgency s -> DOMID
aaNode :: DOMID
, ParserAdoptionAgency s -> DOMID
aaLastNode :: DOMID
, ParserAdoptionAgency s -> DOMID
aaNextNode :: DOMID
, ParserAdoptionAgency s -> DOMID
aaFormattingElement :: DOMID
, ParserAdoptionAgency s -> DOMID
aaCommonAncestor :: DOMID
, ParserAdoptionAgency s -> DOMID
aaFurthestBlock :: DOMID
, ParserAdoptionAgency s -> Maybe DOMID
aaBookmark :: (Maybe DOMID)
, ParserAdoptionAgency s -> ST s ()
aaAnyOtherEndTag :: ST s ()
}
defaultAA :: ST s (ParserAdoptionAgency s)
defaultAA :: ST s (ParserAdoptionAgency s)
defaultAA =
ParserAdoptionAgency s -> ST s (ParserAdoptionAgency s)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ParserAdoptionAgency s -> ST s (ParserAdoptionAgency s))
-> ParserAdoptionAgency s -> ST s (ParserAdoptionAgency s)
forall a b. (a -> b) -> a -> b
$ ParserAdoptionAgency :: forall s.
BS
-> DOMID
-> DOMID
-> DOMID
-> DOMID
-> DOMID
-> DOMID
-> DOMID
-> DOMID
-> Maybe DOMID
-> ST s ()
-> ParserAdoptionAgency s
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 = Maybe DOMID
forall a. Maybe a
Nothing
, aaAnyOtherEndTag :: ST s ()
aaAnyOtherEndTag = () -> ST s ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
}
modifyAA :: Parser s -> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
modifyAA :: 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)
..} = STRef s (ParserAdoptionAgency s)
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST 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 :: 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)
..} = STRef s (ParserAdoptionAgency s) -> ST s (ParserAdoptionAgency 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 :: Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p ParserAdoptionAgency s -> a
f = ParserAdoptionAgency s -> a
f (ParserAdoptionAgency s -> a)
-> ST s (ParserAdoptionAgency s) -> ST s a
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s (ParserAdoptionAgency s)
forall s. Parser s -> ST s (ParserAdoptionAgency s)
getAA Parser s
p
adoptionAgencyRun :: Parser s -> BS -> ST s () -> ST s ()
adoptionAgencyRun :: 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 <- Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p (DOMType -> ST s Bool) -> DOMType -> ST s Bool
forall a b. (a -> b) -> a -> b
$ BS -> DOMType
domMakeTypeHTML BS
subject
Bool
b <- Parser s -> ST s (Maybe DOMID)
forall s. Parser s -> ST s (Maybe DOMID)
currentNodeID Parser s
p ST s (Maybe DOMID) -> (Maybe DOMID -> ST s Bool) -> ST s Bool
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Just DOMID
i -> ST s Bool -> ST s Bool
forall (m :: * -> *). Functor m => m Bool -> m Bool
notM (ST s Bool -> ST s Bool) -> ST s Bool -> ST s Bool
forall a b. (a -> b) -> a -> b
$ Parser s -> DOMID -> ST s Bool
forall s. Parser s -> DOMID -> ST s Bool
activeFormatContains Parser s
p DOMID
i
Maybe DOMID
Nothing -> Bool -> ST s Bool
forall (f :: * -> *) a. Applicative f => a -> f a
pure Bool
True
Bool -> ST s () -> ST s ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (Bool
a Bool -> Bool -> Bool
&& Bool
b) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
ParserAdoptionAgency s
aa <- ST s (ParserAdoptionAgency s)
forall s. ST s (ParserAdoptionAgency s)
defaultAA
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
forall s.
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
modifyAA Parser s
p ((ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ())
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
forall a b. (a -> b) -> a -> b
$ ParserAdoptionAgency s
-> ParserAdoptionAgency s -> ParserAdoptionAgency s
forall a b. a -> b -> a
const ParserAdoptionAgency s
aa
{ aaSubject :: BS
aaSubject = BS
subject
, aaAnyOtherEndTag :: ST s ()
aaAnyOtherEndTag = ST s ()
anyOther
}
Parser s -> ST s ()
forall s. Parser s -> ST s ()
adoptionAgencyOuterLoop Parser s
p
adoptionAgencyOuterLoop :: Parser s -> ST s ()
adoptionAgencyOuterLoop :: Parser s -> ST s ()
adoptionAgencyOuterLoop Parser s
p = do
DOMID
i <- Parser s -> (ParserAdoptionAgency s -> DOMID) -> ST s DOMID
forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p ParserAdoptionAgency s -> DOMID
forall s. ParserAdoptionAgency s -> DOMID
aaOuterLoopCount
Bool -> ST s () -> ST s ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (DOMID
i DOMID -> DOMID -> Bool
forall a. Ord a => a -> a -> Bool
< DOMID
8) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
forall s.
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
modifyAA Parser s
p ((ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ())
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
forall a b. (a -> b) -> a -> b
$ \ParserAdoptionAgency s
a -> ParserAdoptionAgency s
a { aaOuterLoopCount :: DOMID
aaOuterLoopCount = ParserAdoptionAgency s -> DOMID
forall s. ParserAdoptionAgency s -> DOMID
aaOuterLoopCount ParserAdoptionAgency s
a DOMID -> DOMID -> DOMID
forall a. Num a => a -> a -> a
+ DOMID
1 }
(ParserAdoptionAgency s -> BS)
-> ST s (ParserAdoptionAgency s) -> ST s BS
forall (f :: * -> *) a b. Applicative f => (a -> b) -> f a -> f b
liftA ParserAdoptionAgency s -> BS
forall s. ParserAdoptionAgency s -> BS
aaSubject (Parser s -> ST s (ParserAdoptionAgency s)
forall s. Parser s -> ST s (ParserAdoptionAgency s)
getAA Parser s
p) ST s BS
-> (BS -> ST s (Maybe ParserFormatItem))
-> ST s (Maybe ParserFormatItem)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Parser s -> BS -> ST s (Maybe ParserFormatItem)
forall s. Parser s -> BS -> ST s (Maybe ParserFormatItem)
activeFormatFindTag Parser s
p ST s (Maybe ParserFormatItem)
-> (Maybe ParserFormatItem -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Maybe ParserFormatItem
Nothing -> do
ST s ()
doAnyOtherEndTag <- Parser s -> (ParserAdoptionAgency s -> ST s ()) -> ST s (ST s ())
forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p ParserAdoptionAgency s -> ST s ()
forall s. ParserAdoptionAgency s -> ST s ()
aaAnyOtherEndTag
ST s ()
doAnyOtherEndTag
Just (ParserFormatElement DOMID
fe Token
t) -> do
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
forall s.
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
modifyAA Parser s
p ((ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ())
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
forall a b. (a -> b) -> a -> b
$ \ParserAdoptionAgency s
a -> ParserAdoptionAgency s
a { aaFormattingElement :: DOMID
aaFormattingElement = DOMID
fe }
DOMNode
x <- Maybe DOMNode -> DOMNode
forall a. HasCallStack => Maybe a -> a
fromJust (Maybe DOMNode -> DOMNode) -> ST s (Maybe DOMNode) -> ST s DOMNode
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> DOMID -> ST s (Maybe DOMNode)
forall s. Parser s -> DOMID -> ST s (Maybe DOMNode)
getNode Parser s
p DOMID
fe
let name :: BS
name = DOMNode -> BS
domElementName DOMNode
x
(Parser s -> (DOMNode -> Bool) -> ST s Bool
forall s. Parser s -> (DOMNode -> Bool) -> ST s Bool
elementStackAny Parser s
p (DOMID -> DOMID -> Bool
forall a. Eq a => a -> a -> Bool
(==) DOMID
fe (DOMID -> Bool) -> (DOMNode -> DOMID) -> DOMNode -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOMNode -> DOMID
domNodeID)) ST s Bool -> (Bool -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False -> do
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p Maybe Token
forall a. Maybe a
Nothing (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$
BS
"element stack missing " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
name
BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
"(ID:" BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> String -> BS
bcPack (DOMID -> String
forall a. Show a => a -> String
show DOMID
fe) BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
") during adoption"
Parser s -> DOMID -> ST s ()
forall s. Parser s -> DOMID -> ST s ()
activeFormatRemove Parser s
p DOMID
fe
Bool
True ->
(Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p (DOMType -> ST s Bool) -> DOMType -> ST s Bool
forall a b. (a -> b) -> a -> b
$ DOMNode -> DOMType
domNodeType DOMNode
x) ST s Bool -> (Bool -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p Maybe Token
forall a. Maybe a
Nothing (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$
BS
"element " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
name BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
" not in scope during adoption"
Bool
True -> do
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (Bool -> (DOMID -> Bool) -> Maybe DOMID -> Bool
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Bool
False (DOMID -> DOMID -> Bool
forall a. Eq a => a -> a -> Bool
==DOMID
fe) (Maybe DOMID -> Bool) -> ST s (Maybe DOMID) -> ST s Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s (Maybe DOMID)
forall s. Parser s -> ST s (Maybe DOMID)
currentNodeID Parser s
p) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p Maybe Token
forall a. Maybe a
Nothing (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"element " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
name
BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
" is not the current ID during adoption"
DOM
d <- Parser s -> ST s DOM
forall s. Parser s -> ST s DOM
getDOM Parser s
p
[DOMID] -> Maybe DOMID
f <- ([DOMID] -> Maybe DOMID) -> ST s ([DOMID] -> Maybe DOMID)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (([DOMID] -> Maybe DOMID) -> ST s ([DOMID] -> Maybe DOMID))
-> ([DOMID] -> Maybe DOMID) -> ST s ([DOMID] -> Maybe DOMID)
forall a b. (a -> b) -> a -> b
$ (DOMID -> Bool) -> [DOMID] -> Maybe DOMID
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a
find ((DOMID -> Bool) -> [DOMID] -> Maybe DOMID)
-> (DOMID -> Bool) -> [DOMID] -> Maybe DOMID
forall a b. (a -> b) -> a -> b
$ DOMType -> Bool
elementIsSpecial
(DOMType -> Bool) -> (DOMID -> DOMType) -> DOMID -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOMNode -> DOMType
domNodeType (DOMNode -> DOMType) -> (DOMID -> DOMNode) -> DOMID -> DOMType
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Maybe DOMNode -> DOMNode
forall a. HasCallStack => Maybe a -> a
fromJust (Maybe DOMNode -> DOMNode)
-> (DOMID -> Maybe DOMNode) -> DOMID -> DOMNode
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOM -> DOMID -> Maybe DOMNode
domGetNode DOM
d
([DOMID] -> Maybe DOMID) -> ST s [DOMID] -> ST s (Maybe DOMID)
forall (f :: * -> *) a b. Applicative f => (a -> b) -> f a -> f b
liftA ([DOMID] -> Maybe DOMID
f ([DOMID] -> Maybe DOMID)
-> ([DOMID] -> [DOMID]) -> [DOMID] -> Maybe DOMID
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [DOMID] -> [DOMID]
forall a. [a] -> [a]
reverse ([DOMID] -> [DOMID]) -> ([DOMID] -> [DOMID]) -> [DOMID] -> [DOMID]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DOMID -> Bool) -> [DOMID] -> [DOMID]
forall a. (a -> Bool) -> [a] -> [a]
takeWhile (DOMID -> DOMID -> Bool
forall a. Eq a => a -> a -> Bool
/=DOMID
fe)) (Parser s -> ST s [DOMID]
forall s. Parser s -> ST s [DOMID]
elementStack Parser s
p) ST s (Maybe DOMID) -> (Maybe DOMID -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Maybe DOMID
Nothing -> do
Parser s -> DOMID -> ST s ()
forall s. Parser s -> DOMID -> ST s ()
elementStackPopUntilID Parser s
p DOMID
fe
Parser s -> DOMID -> ST s ()
forall s. Parser s -> DOMID -> ST s ()
activeFormatRemove Parser s
p DOMID
fe
Just DOMID
fb -> do
DOMID
ca <- Maybe DOMID -> DOMID
forall a. HasCallStack => Maybe a -> a
fromJust (Maybe DOMID -> DOMID) -> ST s (Maybe DOMID) -> ST s DOMID
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> DOMID -> ST s (Maybe DOMID)
forall s. Parser s -> DOMID -> ST s (Maybe DOMID)
elementStackSucc Parser s
p DOMID
fe
Maybe DOMID
bm <- Parser s -> DOMID -> ST s (Maybe DOMID)
forall s. Parser s -> DOMID -> ST s (Maybe DOMID)
activeFormatSucc Parser s
p DOMID
fe
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
forall s.
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
modifyAA Parser s
p ((ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ())
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
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
}
Parser s -> ST s ()
forall s. Parser s -> ST s ()
adoptionAgencyInnerLoop Parser s
p
adoptionAgencyInnerLoop :: Parser s -> ST s ()
adoptionAgencyInnerLoop :: Parser s -> ST s ()
adoptionAgencyInnerLoop Parser s
p = do
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
forall s.
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
modifyAA Parser s
p ((ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ())
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
forall a b. (a -> b) -> a -> b
$ \ParserAdoptionAgency s
a -> ParserAdoptionAgency s
a { aaInnerLoopCount :: DOMID
aaInnerLoopCount = ParserAdoptionAgency s -> DOMID
forall s. ParserAdoptionAgency s -> DOMID
aaInnerLoopCount ParserAdoptionAgency s
a DOMID -> DOMID -> DOMID
forall a. Num a => a -> a -> a
+ DOMID
1 }
DOMID
n <- Parser s -> (ParserAdoptionAgency s -> DOMID) -> ST s DOMID
forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p ParserAdoptionAgency s -> DOMID
forall s. ParserAdoptionAgency s -> DOMID
aaNode
DOMID
m <- Parser s -> (ParserAdoptionAgency s -> DOMID) -> ST s DOMID
forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p ParserAdoptionAgency s -> DOMID
forall s. ParserAdoptionAgency s -> DOMID
aaNextNode
DOMID
node <- DOMID -> (DOMID -> DOMID) -> Maybe DOMID -> DOMID
forall b a. b -> (a -> b) -> Maybe a -> b
maybe DOMID
m DOMID -> DOMID
forall a. a -> a
id (Maybe DOMID -> DOMID) -> ST s (Maybe DOMID) -> ST s DOMID
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> DOMID -> ST s (Maybe DOMID)
forall s. Parser s -> DOMID -> ST s (Maybe DOMID)
elementStackSucc Parser s
p DOMID
n
DOMID
f <- Parser s -> (ParserAdoptionAgency s -> DOMID) -> ST s DOMID
forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p ParserAdoptionAgency s -> DOMID
forall s. ParserAdoptionAgency s -> DOMID
aaFormattingElement
if DOMID
node DOMID -> DOMID -> Bool
forall a. Eq a => a -> a -> Bool
== DOMID
f
then Parser s -> ST s ()
forall s. Parser s -> ST s ()
adoptionAgencyPostLoop Parser s
p
else do
DOMID
ic <- Parser s -> (ParserAdoptionAgency s -> DOMID) -> ST s DOMID
forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p ParserAdoptionAgency s -> DOMID
forall s. ParserAdoptionAgency s -> DOMID
aaInnerLoopCount
Bool
ac <- Parser s -> DOMID -> ST s Bool
forall s. Parser s -> DOMID -> ST s Bool
activeFormatContains Parser s
p DOMID
node
Bool -> ST s () -> ST s ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (DOMID
ic DOMID -> DOMID -> Bool
forall a. Ord a => a -> a -> Bool
> DOMID
3 Bool -> Bool -> Bool
&& Bool
ac) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ Parser s -> DOMID -> ST s ()
forall s. Parser s -> DOMID -> ST s ()
activeFormatRemove Parser s
p DOMID
node
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (Parser s -> DOMID -> ST s Bool
forall s. Parser s -> DOMID -> ST s Bool
activeFormatContains Parser s
p DOMID
node) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
DOMID
m <- Maybe DOMID -> DOMID
forall a. HasCallStack => Maybe a -> a
fromJust (Maybe DOMID -> DOMID) -> ST s (Maybe DOMID) -> ST s DOMID
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> DOMID -> ST s (Maybe DOMID)
forall s. Parser s -> DOMID -> ST s (Maybe DOMID)
elementStackSucc Parser s
p DOMID
node
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
forall s.
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
modifyAA Parser s
p ((ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ())
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
forall a b. (a -> b) -> a -> b
$ \ParserAdoptionAgency s
a -> ParserAdoptionAgency s
a { aaNextNode :: DOMID
aaNextNode = DOMID
m }
Parser s -> DOMID -> ST s ()
forall s. Parser s -> DOMID -> ST s ()
elementStackRemove Parser s
p DOMID
node
Parser s -> ST s ()
forall s. Parser s -> ST s ()
adoptionAgencyInnerLoop Parser s
p
Token
t <- Maybe Token -> Token
forall a. HasCallStack => Maybe a -> a
fromJust (Maybe Token -> Token) -> ST s (Maybe Token) -> ST s Token
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> DOMID -> ST s (Maybe Token)
forall s. Parser s -> DOMID -> ST s (Maybe Token)
activeFormatFindToken Parser s
p DOMID
node
DOMID
e <- Parser s -> Token -> HTMLNamespace -> ST s DOMID
forall s. Parser s -> Token -> HTMLNamespace -> ST s DOMID
createElementForToken Parser s
p Token
t HTMLNamespace
HTMLNamespaceHTML
DOMID
c <- Parser s -> (ParserAdoptionAgency s -> DOMID) -> ST s DOMID
forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p ParserAdoptionAgency s -> DOMID
forall s. ParserAdoptionAgency s -> DOMID
aaCommonAncestor
Parser s -> (DOM -> DOM) -> ST s ()
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p ((DOM -> DOM) -> ST s ()) -> (DOM -> DOM) -> ST s ()
forall a b. (a -> b) -> a -> b
$ DOMID -> DOMID -> DOM -> DOM
domAppend DOMID
c DOMID
e
Parser s -> DOMID -> DOMID -> ST s ()
forall s. Parser s -> DOMID -> DOMID -> ST s ()
activeFormatReplace Parser s
p DOMID
node DOMID
e
Parser s -> DOMID -> DOMID -> ST s ()
forall s. Parser s -> DOMID -> DOMID -> ST s ()
elementStackReplace Parser s
p DOMID
node DOMID
e
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
forall s.
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
modifyAA Parser s
p ((ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ())
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
forall a b. (a -> b) -> a -> b
$ \ParserAdoptionAgency s
a -> ParserAdoptionAgency s
a { aaNode :: DOMID
aaNode = DOMID
e }
DOMID
x <- Parser s -> (ParserAdoptionAgency s -> DOMID) -> ST s DOMID
forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p ParserAdoptionAgency s -> DOMID
forall s. ParserAdoptionAgency s -> DOMID
aaLastNode
DOMID
b <- Parser s -> (ParserAdoptionAgency s -> DOMID) -> ST s DOMID
forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p ParserAdoptionAgency s -> DOMID
forall s. ParserAdoptionAgency s -> DOMID
aaFurthestBlock
Bool -> ST s () -> ST s ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (DOMID
x DOMID -> DOMID -> Bool
forall a. Eq a => a -> a -> Bool
== DOMID
b) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
Maybe DOMID
bm <- Parser s -> DOMID -> ST s (Maybe DOMID)
forall s. Parser s -> DOMID -> ST s (Maybe DOMID)
activeFormatSucc Parser s
p DOMID
e
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
forall s.
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
modifyAA Parser s
p ((ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ())
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
forall a b. (a -> b) -> a -> b
$ \ParserAdoptionAgency s
a -> ParserAdoptionAgency s
a { aaBookmark :: Maybe DOMID
aaBookmark = Maybe DOMID
bm }
Parser s -> (DOM -> DOM) -> ST s ()
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p ((DOM -> DOM) -> ST s ()) -> (DOM -> DOM) -> ST s ()
forall a b. (a -> b) -> a -> b
$ DOMID -> DOMID -> DOM -> DOM
domMove DOMID
x DOMID
e
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
forall s.
Parser s
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
modifyAA Parser s
p ((ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ())
-> (ParserAdoptionAgency s -> ParserAdoptionAgency s) -> ST s ()
forall a b. (a -> b) -> a -> b
$ \ParserAdoptionAgency s
a -> ParserAdoptionAgency s
a { aaLastNode :: DOMID
aaLastNode = DOMID
e }
Parser s -> ST s ()
forall s. Parser s -> ST s ()
adoptionAgencyInnerLoop Parser s
p
adoptionAgencyPostLoop :: Parser s -> ST s ()
adoptionAgencyPostLoop :: Parser s -> ST s ()
adoptionAgencyPostLoop Parser s
p = do
DOMID
c <- Parser s -> (ParserAdoptionAgency s -> DOMID) -> ST s DOMID
forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p ParserAdoptionAgency s -> DOMID
forall s. ParserAdoptionAgency s -> DOMID
aaCommonAncestor
DOMID
n <- Parser s -> (ParserAdoptionAgency s -> DOMID) -> ST s DOMID
forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p ParserAdoptionAgency s -> DOMID
forall s. ParserAdoptionAgency s -> DOMID
aaLastNode
DOMPos
i <- Parser s -> Maybe DOMID -> ST s DOMPos
forall s. Parser s -> Maybe DOMID -> ST s DOMPos
appropriateInsertionLocation Parser s
p (Maybe DOMID -> ST s DOMPos) -> Maybe DOMID -> ST s DOMPos
forall a b. (a -> b) -> a -> b
$ DOMID -> Maybe DOMID
forall a. a -> Maybe a
Just DOMID
c
Parser s -> (DOM -> DOM) -> ST s ()
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p ((DOM -> DOM) -> ST s ()) -> (DOM -> DOM) -> ST s ()
forall a b. (a -> b) -> a -> b
$ DOMID -> DOMID -> DOM -> DOM
domMove DOMID
n (DOMID -> DOM -> DOM) -> DOMID -> DOM -> DOM
forall a b. (a -> b) -> a -> b
$ DOMPos -> DOMID
domPosParent DOMPos
i
DOMID
f <- Parser s -> (ParserAdoptionAgency s -> DOMID) -> ST s DOMID
forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p ParserAdoptionAgency s -> DOMID
forall s. ParserAdoptionAgency s -> DOMID
aaFormattingElement
Token
t <- Maybe Token -> Token
forall a. HasCallStack => Maybe a -> a
fromJust (Maybe Token -> Token) -> ST s (Maybe Token) -> ST s Token
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> DOMID -> ST s (Maybe Token)
forall s. Parser s -> DOMID -> ST s (Maybe Token)
activeFormatFindToken Parser s
p DOMID
f
DOMID
e <- Parser s -> Token -> HTMLNamespace -> ST s DOMID
forall s. Parser s -> Token -> HTMLNamespace -> ST s DOMID
createElementForToken Parser s
p Token
t HTMLNamespace
HTMLNamespaceHTML
DOMID
b <- Parser s -> (ParserAdoptionAgency s -> DOMID) -> ST s DOMID
forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p ParserAdoptionAgency s -> DOMID
forall s. ParserAdoptionAgency s -> DOMID
aaFurthestBlock
Parser s -> (DOM -> DOM) -> ST s ()
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p ((DOM -> DOM) -> ST s ()) -> (DOM -> DOM) -> ST s ()
forall a b. (a -> b) -> a -> b
$ DOMID -> DOMID -> DOM -> DOM
domMoveChildren DOMID
b DOMID
e
Parser s -> (DOM -> DOM) -> ST s ()
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p ((DOM -> DOM) -> ST s ()) -> (DOM -> DOM) -> ST s ()
forall a b. (a -> b) -> a -> b
$ DOMID -> DOMID -> DOM -> DOM
domAppend DOMID
b DOMID
e
Parser s -> DOMID -> ST s ()
forall s. Parser s -> DOMID -> ST s ()
activeFormatRemove Parser s
p DOMID
f
Parser s
-> (ParserAdoptionAgency s -> Maybe DOMID) -> ST s (Maybe DOMID)
forall s a. Parser s -> (ParserAdoptionAgency s -> a) -> ST s a
getsAA Parser s
p ParserAdoptionAgency s -> Maybe DOMID
forall s. ParserAdoptionAgency s -> Maybe DOMID
aaBookmark ST s (Maybe DOMID) -> (Maybe DOMID -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Parser s -> DOMID -> Token -> Maybe DOMID -> ST s ()
forall s. Parser s -> DOMID -> Token -> Maybe DOMID -> ST s ()
activeFormatInsertElement Parser s
p DOMID
e Token
t
Parser s -> DOMID -> ST s ()
forall s. Parser s -> DOMID -> ST s ()
elementStackRemove Parser s
p DOMID
f
Parser s -> DOMID -> DOMID -> ST s ()
forall s. Parser s -> DOMID -> DOMID -> ST s ()
elementStackInsertBefore Parser s
p DOMID
b DOMID
e
Parser s -> ST s ()
forall s. Parser s -> ST s ()
adoptionAgencyOuterLoop Parser s
p
pendingTableCharInit :: Parser s -> ST s ()
pendingTableCharInit :: 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)
..} = STRef s [Token] -> [Token] -> ST s ()
forall s a. STRef s a -> a -> ST s ()
wref STRef s [Token]
parserTableChars []
pendingTableCharAppend :: Parser s -> Token -> ST s ()
pendingTableCharAppend :: 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 = STRef s [Token] -> ([Token] -> [Token]) -> ST s ()
forall s a. STRef s a -> (a -> a) -> ST s ()
uref STRef s [Token]
parserTableChars ([Token] -> [Token] -> [Token]
forall a. Semigroup a => a -> a -> a
<>[Token
t])
pendingTableChars :: Parser s -> ST s [Token]
pendingTableChars :: 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)
..} = STRef s [Token] -> ST s [Token]
forall s a. STRef s a -> ST s a
rref STRef s [Token]
parserTableChars
doctypeTokenCheck :: Parser s -> Token -> ST s ()
doctypeTokenCheck :: 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) =
Bool -> ST s () -> ST s ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (BS
n BS -> BS -> Bool
forall a. Eq a => a -> a -> Bool
/= BS
"html"
Bool -> Bool -> Bool
|| Maybe BS
p Maybe BS -> Maybe BS -> Bool
forall a. Eq a => a -> a -> Bool
/= Maybe BS
forall a. Maybe a
Nothing
Bool -> Bool -> Bool
|| Maybe BS
s Maybe BS -> Maybe BS -> Bool
forall a. Eq a => a -> a -> Bool
/= Maybe BS
forall a. Maybe a
Nothing Bool -> Bool -> Bool
&& Maybe BS
s Maybe BS -> Maybe BS -> Bool
forall a. Eq a => a -> a -> Bool
/= BS -> Maybe BS
forall a. a -> Maybe a
Just BS
"about:legacy-compat") (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
parser (Token -> Maybe Token
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) =
[Bool] -> Bool
forall (t :: * -> *). Foldable t => t Bool -> Bool
or
[ BS
n BS -> BS -> Bool
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
, [Bool] -> Bool
forall (t :: * -> *). Foldable t => t Bool -> Bool
and
[ Maybe BS
s Maybe BS -> Maybe BS -> Bool
forall a. Eq a => a -> a -> Bool
== Maybe BS
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
..} =
[Bool] -> Bool
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//"
]
, [Bool] -> Bool
forall (t :: * -> *). Foldable t => t Bool -> Bool
and
[ Maybe BS -> Bool
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 BS -> BS -> Bool
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 = (BS -> Bool) -> [BS] -> Bool
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 :: 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
() -> ST s ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
TComment {} -> do
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertDocComment Parser s
p Token
t
TDoctype {} -> do
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doctypeTokenCheck Parser s
p Token
t
Parser s -> Token -> ST s DOMNode
forall s. Parser s -> Token -> ST s DOMNode
doctypeMake Parser s
p Token
t ST s DOMNode -> (DOMNode -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Parser s -> DOMNode -> ST s ()
forall s. Parser s -> DOMNode -> ST s ()
insertNewDocumentNode Parser s
p
Bool
iframe <- Parser s -> ST s Bool
forall s. Parser s -> ST s Bool
iframeSrcDoc Parser s
p
Bool -> ST s () -> ST s ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Bool -> Bool
not Bool
iframe Bool -> Bool -> Bool
&& Token -> Bool
tokenQuirks Token
t) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
Parser s -> (DOM -> DOM) -> ST s ()
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p ((DOM -> DOM) -> ST s ()) -> (DOM -> DOM) -> ST s ()
forall a b. (a -> b) -> a -> b
$ DOMQuirks -> DOM -> DOM
domQuirksSet DOMQuirks
DOMQuirksMode
Bool -> ST s () -> ST s ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Bool -> Bool
not Bool
iframe Bool -> Bool -> Bool
&& Token -> Bool
tokenLimitedQuirks Token
t) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
Parser s -> (DOM -> DOM) -> ST s ()
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p ((DOM -> DOM) -> ST s ()) -> (DOM -> DOM) -> ST s ()
forall a b. (a -> b) -> a -> b
$ DOMQuirks -> DOM -> DOM
domQuirksSet DOMQuirks
DOMQuirksLimited
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeBeforeHtml
Token
_otherwise -> do
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (ST s Bool -> ST s Bool
forall (m :: * -> *). Functor m => m Bool -> m Bool
notM (ST s Bool -> ST s Bool) -> ST s Bool -> ST s Bool
forall a b. (a -> b) -> a -> b
$ Parser s -> ST s Bool
forall s. Parser s -> ST s Bool
iframeSrcDoc Parser s
p) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) BS
"initial unexpected token"
Parser s -> (DOM -> DOM) -> ST s ()
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p ((DOM -> DOM) -> ST s ()) -> (DOM -> DOM) -> ST s ()
forall a b. (a -> b) -> a -> b
$ DOMQuirks -> DOM -> DOM
domQuirksSet DOMQuirks
DOMQuirksMode
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeBeforeHtml
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
doModeBeforeHtml :: Parser s -> Token -> ST s ()
doModeBeforeHtml :: 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 {} ->
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) BS
"before html doctype"
TComment {} ->
Parser s -> Token -> ST s ()
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 ->
() -> ST s ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
TStart { tStartName :: Token -> BS
tStartName = BS
"html" } -> do
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeBeforeHead
TEnd { tEndName :: Token -> BS
tEndName = BS
x }
| BS -> [BS] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [ BS
"head", BS
"body", BS
"html", BS
"br" ] -> do
Parser s -> BS -> ST s ()
forall s. Parser s -> BS -> ST s ()
insertHtmlElementNamed Parser s
p BS
"html"
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeBeforeHead
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd {} ->
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) BS
"before html end tag"
Token
_otherwise -> do
Parser s -> BS -> ST s ()
forall s. Parser s -> BS -> ST s ()
insertHtmlElementNamed Parser s
p BS
"html"
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeBeforeHead
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
doModeBeforeHead :: Parser s -> Token -> ST s ()
doModeBeforeHead :: 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 ->
() -> ST s ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
TComment {} ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertComment Parser s
p Token
t
TDoctype {} ->
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) BS
"before head doctype"
TStart { tStartName :: Token -> BS
tStartName = BS
"html" } ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"head" } -> do
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
saveHead Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInHead
TEnd { tEndName :: Token -> BS
tEndName = BS
x }
| BS -> [BS] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [ BS
"head", BS
"body", BS
"html", BS
"br" ] -> do
Parser s -> BS -> ST s ()
forall s. Parser s -> BS -> ST s ()
insertHtmlElementNamed Parser s
p BS
"head"
Parser s -> ST s ()
forall s. Parser s -> ST s ()
saveHead Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInHead
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd {} ->
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) BS
"before head end tag"
Token
_otherwise -> do
Parser s -> BS -> ST s ()
forall s. Parser s -> BS -> ST s ()
insertHtmlElementNamed Parser s
p BS
"head"
Parser s -> ST s ()
forall s. Parser s -> ST s ()
saveHead Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInHead
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
doModeInHead :: Parser s -> Token -> ST s ()
doModeInHead :: 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 ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p Token
t
TComment {} ->
Parser s -> Token -> ST s ()
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" } ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x }
| BS -> [BS] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [ BS
"base", BS
"basefont", BS
"bgsound", BS
"link" ] -> do
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
"meta" } -> do
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
"title" } ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertElementRCDATA Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"noframes" } ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertElementRAWTEXT Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"style" } ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertElementRAWTEXT Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"noscript" } -> do
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInHeadNoscript
TStart { tStartName :: Token -> BS
tStartName = BS
"script" } -> do
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
parserSetScriptData Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
saveMode Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeText
TEnd { tEndName :: Token -> BS
tEndName = BS
"head" } -> do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeAfterHead
TEnd { tEndName :: Token -> BS
tEndName = BS
x }
| BS -> [BS] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [ BS
"body", BS
"html", BS
"br" ] -> do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeAfterHead
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"template" } -> do
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatAddMarker Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTemplate
Parser s -> ParserMode -> ST s ()
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
Parser s -> ST s Bool
forall s. Parser s -> ST s Bool
elementStackHasTemplate Parser s
p ST s Bool -> (Bool -> ST s ()) -> ST s ()
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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
generateImpliedEndTagsThoroughly Parser s
p
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p Maybe Token
forall a. Maybe a
Nothing BS
"template not current node"
Parser s -> DOMType -> ST s ()
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatClear Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
templateModePop Parser s
p
Parser s -> ST s ()
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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeAfterHead
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
where
warn :: BS -> ST s ()
warn BS
x = Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"in head " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
x
doModeInHeadNoscript :: Parser s -> Token -> ST s ()
doModeInHeadNoscript :: 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" } ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"noscript" } -> do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ParserMode -> ST s ()
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 ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
TComment {} ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x }
| BS -> [BS] -> Bool
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" ] ->
Parser s -> Token -> ST s ()
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"
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInHead
Parser s -> Token -> ST s ()
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"
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInHead
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
where
warn :: BS -> ST s ()
warn BS
x = Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"in head noscript " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
x
doModeAfterHead :: Parser s -> Token -> ST s ()
doModeAfterHead :: 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 ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p Token
t
TComment {} ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertComment Parser s
p Token
t
TDoctype {} ->
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) BS
"after head doctype"
TStart { tStartName :: Token -> BS
tStartName = BS
"html" } ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"body" } -> do
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInBody
TStart { tStartName :: Token -> BS
tStartName = BS
"frameset" } -> do
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInFrameset
TStart { tStartName :: Token -> BS
tStartName = BS
x }
| BS -> [BS] -> Bool
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
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) BS
"AfterHead bad start tag"
Just DOMID
h <- Parser s -> ST s (Maybe DOMID)
forall s. Parser s -> ST s (Maybe DOMID)
getHeadID Parser s
p
Parser s -> DOMID -> ST s ()
forall s. Parser s -> DOMID -> ST s ()
elementStackPush Parser s
p DOMID
h
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
Parser s -> DOMID -> ST s ()
forall s. Parser s -> DOMID -> ST s ()
elementStackRemove Parser s
p DOMID
h
TEnd { tEndName :: Token -> BS
tEndName = BS
"template" } ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
x }
| BS -> [BS] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [ BS
"body", BS
"html", BS
"br" ] -> do
Parser s -> BS -> ST s ()
forall s. Parser s -> BS -> ST s ()
insertHtmlElementNamed Parser s
p BS
"body"
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInBody
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"head" } ->
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) BS
"after head head"
TEnd {} ->
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) BS
"after head end tag"
Token
_otherwise -> do
Parser s -> BS -> ST s ()
forall s. Parser s -> BS -> ST s ()
insertHtmlElementNamed Parser s
p BS
"body"
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInBody
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
doModeInBody :: Parser s -> Token -> ST s ()
doModeInBody :: 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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p Token
t
TChar {} -> do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
TComment {} ->
Parser s -> Token -> ST s ()
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
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (Parser s -> ST s Bool
forall s. Parser s -> ST s Bool
elementStackHasTemplate Parser s
p) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
Just DOMID
i <- Parser s -> ST s (Maybe DOMID)
forall s. Parser s -> ST s (Maybe DOMID)
lastNodeID Parser s
p
Parser s -> (DOM -> DOM) -> ST s ()
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p ((DOM -> DOM) -> ST s ()) -> (DOM -> DOM) -> ST s ()
forall a b. (a -> b) -> a -> b
$ DOMID -> Seq DOMAttr -> DOM -> DOM
domAttrMerge DOMID
i (Seq DOMAttr -> DOM -> DOM) -> Seq DOMAttr -> DOM -> DOM
forall a b. (a -> b) -> a -> b
$ [DOMAttr] -> Seq DOMAttr
forall a. [a] -> Seq a
Seq.fromList ([DOMAttr] -> Seq DOMAttr) -> [DOMAttr] -> Seq DOMAttr
forall a b. (a -> b) -> a -> b
$
(TAttr -> DOMAttr) -> [TAttr] -> [DOMAttr]
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) ([TAttr] -> [DOMAttr]) -> [TAttr] -> [DOMAttr]
forall a b. (a -> b) -> a -> b
$ Token -> [TAttr]
tStartAttr Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x }
| BS -> [BS] -> Bool
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"] ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"template" } ->
Parser s -> Token -> ST s ()
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
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (ST s Bool -> ST s Bool
forall (m :: * -> *). Functor m => m Bool -> m Bool
notM (Parser s -> ST s Bool
forall s. Parser s -> ST s Bool
elementStackHasBody Parser s
p)
ST s Bool -> ST s Bool -> ST s Bool
forall (m :: * -> *). Monad m => m Bool -> m Bool -> m Bool
||^ (DOMID -> Bool) -> ST s DOMID -> ST s Bool
forall (f :: * -> *) a b. Applicative f => (a -> b) -> f a -> f b
liftA (DOMID -> DOMID -> Bool
forall a. Eq a => a -> a -> Bool
==DOMID
1) (Parser s -> ST s DOMID
forall s. Parser s -> ST s DOMID
elementStackSize Parser s
p)
ST s Bool -> ST s Bool -> ST s Bool
forall (m :: * -> *). Monad m => m Bool -> m Bool -> m Bool
||^ (Parser s -> ST s Bool
forall s. Parser s -> ST s Bool
elementStackHasTemplate Parser s
p)) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
Just DOMID
i <- [DOMID] -> Maybe DOMID
forall a. [a] -> Maybe a
listToMaybe ([DOMID] -> Maybe DOMID)
-> ([DOMID] -> [DOMID]) -> [DOMID] -> Maybe DOMID
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOMID -> [DOMID] -> [DOMID]
forall a. DOMID -> [a] -> [a]
drop DOMID
1 ([DOMID] -> [DOMID]) -> ([DOMID] -> [DOMID]) -> [DOMID] -> [DOMID]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [DOMID] -> [DOMID]
forall a. [a] -> [a]
reverse ([DOMID] -> Maybe DOMID) -> ST s [DOMID] -> ST s (Maybe DOMID)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s [DOMID]
forall s. Parser s -> ST s [DOMID]
elementStack Parser s
p
Parser s -> (DOM -> DOM) -> ST s ()
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p ((DOM -> DOM) -> ST s ()) -> (DOM -> DOM) -> ST s ()
forall a b. (a -> b) -> a -> b
$ DOMID -> Seq DOMAttr -> DOM -> DOM
domAttrMerge DOMID
i (Seq DOMAttr -> DOM -> DOM) -> Seq DOMAttr -> DOM -> DOM
forall a b. (a -> b) -> a -> b
$ [DOMAttr] -> Seq DOMAttr
forall a. [a] -> Seq a
Seq.fromList ([DOMAttr] -> Seq DOMAttr) -> [DOMAttr] -> Seq DOMAttr
forall a b. (a -> b) -> a -> b
$
(TAttr -> DOMAttr) -> [TAttr] -> [DOMAttr]
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) ([TAttr] -> [DOMAttr]) -> [TAttr] -> [DOMAttr]
forall a b. (a -> b) -> a -> b
$ Token -> [TAttr]
tStartAttr Token
t
TStart { tStartName :: Token -> BS
tStartName = x :: BS
x@BS
"frameset" } -> do
BS -> ST s ()
warn BS
x
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM ((DOMID -> Bool) -> ST s DOMID -> ST s Bool
forall (f :: * -> *) a b. Applicative f => (a -> b) -> f a -> f b
liftA (DOMID -> DOMID -> Bool
forall a. Eq a => a -> a -> Bool
==DOMID
1) (Parser s -> ST s DOMID
forall s. Parser s -> ST s DOMID
elementStackSize Parser s
p)
ST s Bool -> ST s Bool -> ST s Bool
forall (m :: * -> *). Monad m => m Bool -> m Bool -> m Bool
||^ ST s Bool -> ST s Bool
forall (m :: * -> *). Functor m => m Bool -> m Bool
notM (Parser s -> ST s Bool
forall s. Parser s -> ST s Bool
elementStackHasBody Parser s
p)
ST s Bool -> ST s Bool -> ST s Bool
forall (m :: * -> *). Monad m => m Bool -> m Bool -> m Bool
||^ ST s Bool -> ST s Bool
forall (m :: * -> *). Functor m => m Bool -> m Bool
notM (STRef s Bool -> ST s Bool
forall s a. STRef s a -> ST s a
rref STRef s Bool
parserFrameSetOK)) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
Just DOMNode
n <- [DOMNode] -> Maybe DOMNode
forall a. [a] -> Maybe a
listToMaybe ([DOMNode] -> Maybe DOMNode)
-> ([DOMNode] -> [DOMNode]) -> [DOMNode] -> Maybe DOMNode
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOMID -> [DOMNode] -> [DOMNode]
forall a. DOMID -> [a] -> [a]
drop DOMID
1 ([DOMNode] -> [DOMNode])
-> ([DOMNode] -> [DOMNode]) -> [DOMNode] -> [DOMNode]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [DOMNode] -> [DOMNode]
forall a. [a] -> [a]
reverse ([DOMNode] -> Maybe DOMNode)
-> ST s [DOMNode] -> ST s (Maybe DOMNode)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s [DOMNode]
forall s. Parser s -> ST s [DOMNode]
elementStackNodes Parser s
p
Parser s -> (DOM -> DOM) -> ST s ()
forall s. Parser s -> (DOM -> DOM) -> ST s ()
modifyDOM Parser s
p ((DOM -> DOM) -> ST s ()) -> (DOM -> DOM) -> ST s ()
forall a b. (a -> b) -> a -> b
$ DOMID -> DOMID -> DOM -> DOM
domRemoveChild (DOMNode -> DOMID
domNodeParent DOMNode
n) (DOMID -> DOM -> DOM) -> DOMID -> DOM -> DOM
forall a b. (a -> b) -> a -> b
$ DOMNode -> DOMID
domNodeID DOMNode
n
Parser s -> (DOMNode -> Bool) -> ST s ()
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopWhile Parser s
p ((DOMNode -> Bool) -> ST s ()) -> (DOMNode -> Bool) -> ST s ()
forall a b. (a -> b) -> a -> b
$ \DOMNode
n ->
DOMNode -> DOMType
domNodeType DOMNode
n DOMType -> DOMType -> Bool
forall a. Eq a => a -> a -> Bool
/= BS -> DOMType
domMakeTypeHTML BS
"html"
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInFrameset
Token
TEOF -> do
DOMID
n <- Parser s -> ST s DOMID
forall s. Parser s -> ST s DOMID
templateModeCount Parser s
p
if DOMID
n DOMID -> DOMID -> Bool
forall a. Ord a => a -> a -> Bool
> DOMID
0
then Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInTemplate Parser s
p Token
t
else do
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (Parser s -> (DOMNode -> Bool) -> ST s Bool
forall s. Parser s -> (DOMNode -> Bool) -> ST s Bool
elementStackAny Parser s
p ((DOMNode -> Bool) -> ST s Bool) -> (DOMNode -> Bool) -> ST s Bool
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"]) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"bad element on stack"
Parser s -> ST s ()
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
Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p DOMType
a ST s Bool -> (Bool -> ST s ()) -> ST s ()
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
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (Parser s -> (DOMNode -> Bool) -> ST s Bool
forall s. Parser s -> (DOMNode -> Bool) -> ST s Bool
elementStackAny Parser s
p ((DOMNode -> Bool) -> ST s Bool) -> (DOMNode -> Bool) -> ST s Bool
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"]) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"bad element on stack"
Parser s -> ParserMode -> ST s ()
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
Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p DOMType
a ST s Bool -> (Bool -> ST s ()) -> ST s ()
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
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (Parser s -> (DOMNode -> Bool) -> ST s Bool
forall s. Parser s -> (DOMNode -> Bool) -> ST s Bool
elementStackAny Parser s
p ((DOMNode -> Bool) -> ST s Bool) -> (DOMNode -> Bool) -> ST s Bool
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"]) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"bad element on stack"
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeAfterBody
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x } | BS -> [BS] -> Bool
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
Parser s -> Token -> ST s ()
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
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x }
| BS -> [BS] -> Bool
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
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (Parser s -> [DOMType] -> ST s Bool
forall s. Parser s -> [DOMType] -> ST s Bool
currentNodeHasTypeIn Parser s
p ([DOMType] -> ST s Bool) -> [DOMType] -> ST s Bool
forall a b. (a -> b) -> a -> b
$ [BS] -> [DOMType]
domTypesHTML
[BS
"h1", BS
"h2", BS
"h3", BS
"h4", BS
"h5", BS
"h6"]) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
BS -> ST s ()
warn BS
"bad header tag on stack"
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x } | BS -> [BS] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [BS
"pre", BS
"listing"] -> do
ST s ()
closeP
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
parserSkipNextLF Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
"form" } -> do
(Parser s -> ST s Bool
forall s. Parser s -> ST s Bool
formNotNull Parser s
p ST s Bool -> ST s Bool -> ST s Bool
forall (m :: * -> *). Monad m => m Bool -> m Bool -> m Bool
&&^ Parser s -> ST s Bool
forall s. Parser s -> ST s Bool
elementStackMissingTemplate Parser s
p) ST s Bool -> (Bool -> ST s ()) -> ST s ()
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
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (Parser s -> ST s Bool
forall s. Parser s -> ST s Bool
elementStackMissingTemplate Parser s
p) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ Parser s -> ST s ()
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 = [DOMType] -> Set DOMType
forall a. Ord a => [a] -> Set a
Set.fromList ([DOMType] -> Set DOMType) -> [DOMType] -> Set DOMType
forall a b. (a -> b) -> a -> b
$ [BS] -> [DOMType]
domTypesHTML [ BS
"address", BS
"div", BS
"p" ]
f :: [DOMType] -> ST s ()
f [] = () -> ST s ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
f (DOMType
y:[DOMType]
ys)
| DOMType
y DOMType -> DOMType -> Bool
forall a. Eq a => a -> a -> Bool
== DOMType
a = do
Parser s -> BS -> ST s ()
forall s. Parser s -> BS -> ST s ()
generateImpliedEndTagsExcept Parser s
p BS
x
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node is not li"
Parser s -> DOMType -> ST s ()
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
| DOMType -> Bool
elementIsSpecial DOMType
y Bool -> Bool -> Bool
&& DOMType -> Set DOMType -> Bool
forall a. Ord a => a -> Set a -> Bool
Set.notMember DOMType
y Set DOMType
s = () -> ST s ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
| Bool
otherwise = [DOMType] -> ST s ()
f [DOMType]
ys
Parser s -> ST s ()
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
Parser s -> ST s [DOMType]
forall s. Parser s -> ST s [DOMType]
elementStackTypes Parser s
p ST s [DOMType] -> ([DOMType] -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= [DOMType] -> ST s ()
f
ST s ()
closeP
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x } | BS -> [BS] -> Bool
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 = [DOMType] -> Set DOMType
forall a. Ord a => [a] -> Set a
Set.fromList ([DOMType] -> Set DOMType) -> [DOMType] -> Set DOMType
forall a b. (a -> b) -> a -> b
$ [BS] -> [DOMType]
domTypesHTML [ BS
"address", BS
"div", BS
"p" ]
f :: [DOMType] -> ST s ()
f [] = () -> ST s ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
f (DOMType
y:[DOMType]
ys)
| DOMType
y DOMType -> DOMType -> Bool
forall a. Eq a => a -> a -> Bool
== DOMType
dd Bool -> Bool -> Bool
|| DOMType
y DOMType -> DOMType -> Bool
forall a. Eq a => a -> a -> Bool
== DOMType
dt = do
Parser s -> BS -> ST s ()
forall s. Parser s -> BS -> ST s ()
generateImpliedEndTagsExcept Parser s
p (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ DOMType -> BS
domTypeName DOMType
y
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
y) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node is not dd or dt"
Parser s -> DOMType -> ST s ()
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
y
| DOMType -> Bool
elementIsSpecial DOMType
y Bool -> Bool -> Bool
&& DOMType -> Set DOMType -> Bool
forall a. Ord a => a -> Set a -> Bool
Set.notMember DOMType
y Set DOMType
s = () -> ST s ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
| Bool
otherwise = [DOMType] -> ST s ()
f [DOMType]
ys
Parser s -> ST s ()
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
Parser s -> ST s [DOMType]
forall s. Parser s -> ST s [DOMType]
elementStackTypes Parser s
p ST s [DOMType] -> ([DOMType] -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= [DOMType] -> ST s ()
f
ST s ()
closeP
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"plaintext" } -> do
ST s ()
closeP
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ST s ()
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
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p DOMType
a) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
BS -> ST s ()
warn BS
"button element in scope"
Parser s -> ST s ()
forall s. Parser s -> ST s ()
generateImpliedEndTags Parser s
p
Parser s -> DOMType -> ST s ()
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
TEnd { tEndName :: Token -> BS
tEndName = BS
x }
| BS -> [BS] -> Bool
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
Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p DOMType
a ST s Bool -> (Bool -> ST s ()) -> ST s ()
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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
generateImpliedEndTags Parser s
p
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node wrong type"
Parser s -> DOMType -> ST s ()
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
TEnd { tEndName :: Token -> BS
tEndName = x :: BS
x@BS
"form" } ->
Parser s -> ST s Bool
forall s. Parser s -> ST s Bool
elementStackHasTemplate Parser s
p ST s Bool -> (Bool -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False -> do
Parser s -> ST s (Maybe DOMID)
forall s. Parser s -> ST s (Maybe DOMID)
getFormID Parser s
p ST s (Maybe DOMID) -> (Maybe DOMID -> ST s ()) -> ST s ()
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 <- Maybe DOMType -> DOMType
forall a. HasCallStack => Maybe a -> a
fromJust (Maybe DOMType -> DOMType) -> ST s (Maybe DOMType) -> ST s DOMType
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s (Maybe DOMType)
forall s. Parser s -> ST s (Maybe DOMType)
getFormType Parser s
p
Parser s -> Maybe DOMID -> ST s ()
forall s. Parser s -> Maybe DOMID -> ST s ()
setFormID Parser s
p Maybe DOMID
forall a. Maybe a
Nothing
Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p DOMType
a ST s Bool -> (Bool -> ST s ()) -> ST s ()
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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
generateImpliedEndTags Parser s
p
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM ((Maybe DOMID -> Bool) -> ST s (Maybe DOMID) -> ST s Bool
forall (f :: * -> *) a b. Applicative f => (a -> b) -> f a -> f b
liftA (Maybe DOMID -> Maybe DOMID -> Bool
forall a. Eq a => a -> a -> Bool
==(DOMID -> Maybe DOMID
forall a. a -> Maybe a
Just DOMID
n)) (Parser s -> ST s (Maybe DOMID)
forall s. Parser s -> ST s (Maybe DOMID)
currentNodeID Parser s
p)) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node is wrong node"
Parser s -> DOMID -> ST s ()
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
Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p DOMType
a ST s Bool -> (Bool -> ST s ()) -> ST s ()
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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
generateImpliedEndTags Parser s
p
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node is not a form"
Parser s -> DOMType -> ST s ()
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
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInButtonScope Parser s
p DOMType
a) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
BS -> ST s ()
warn BS
"no p in button scope"
Parser s -> BS -> ST s ()
forall s. Parser s -> BS -> ST s ()
insertHtmlElementNamed Parser s
p BS
x
Parser s -> ST s ()
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
Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInListScope Parser s
p DOMType
a ST s Bool -> (Bool -> ST s ()) -> ST s ()
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
Parser s -> BS -> ST s ()
forall s. Parser s -> BS -> ST s ()
generateImpliedEndTagsExcept Parser s
p BS
x
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node not an li element"
Parser s -> DOMType -> ST s ()
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
TEnd { tEndName :: Token -> BS
tEndName = BS
x } | BS -> [BS] -> Bool
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
Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInListScope Parser s
p DOMType
a ST s Bool -> (Bool -> ST s ()) -> ST s ()
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
Parser s -> BS -> ST s ()
forall s. Parser s -> BS -> ST s ()
generateImpliedEndTagsExcept Parser s
p BS
x
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current not is not a dd or dt"
Parser s -> DOMType -> ST s ()
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
TEnd { tEndName :: Token -> BS
tEndName = BS
x }
| BS -> [BS] -> Bool
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"]
(DOMType -> ST s Bool) -> [DOMType] -> ST s Bool
forall (m :: * -> *) a. Monad m => (a -> m Bool) -> [a] -> m Bool
anyM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p) [DOMType]
h ST s Bool -> (Bool -> ST s ()) -> ST s ()
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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
generateImpliedEndTags Parser s
p
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p (DOMType -> ST s Bool) -> DOMType -> ST s Bool
forall a b. (a -> b) -> a -> b
$ BS -> DOMType
domMakeTypeHTML BS
x) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node not a header type"
Parser s -> [DOMType] -> ST s ()
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
Parser s -> BS -> ST s (Maybe ParserFormatItem)
forall s. Parser s -> BS -> ST s (Maybe ParserFormatItem)
activeFormatFindTag Parser s
p BS
x ST s (Maybe ParserFormatItem)
-> (Maybe ParserFormatItem -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Maybe ParserFormatItem
Nothing -> () -> ST s ()
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
Parser s -> DOMID -> ST s ()
forall s. Parser s -> DOMID -> ST s ()
elementStackRemove Parser s
p DOMID
i
Parser s -> DOMID -> ST s ()
forall s. Parser s -> DOMID -> ST s ()
activeFormatRemove Parser s
p DOMID
i
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
activeFormatAddCurrentNode Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x } | BS -> [BS] -> Bool
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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> Token -> ST s ()
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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p DOMType
a) (ST s () -> ST s ()) -> ST s () -> ST s ()
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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
activeFormatAddCurrentNode Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
x } | BS -> [BS] -> Bool
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 } | BS -> [BS] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"applet", BS
"marquee", BS
"object"] -> do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatAddMarker Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
TEnd { tEndName :: Token -> BS
tEndName = BS
x } | BS -> [BS] -> Bool
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
Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p DOMType
a ST s Bool -> (Bool -> ST s ()) -> ST s ()
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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
generateImpliedEndTags Parser s
p
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node is wring type"
Parser s -> DOMType -> ST s ()
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatClear Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
"table" } -> do
DOMQuirks
q <- DOM -> DOMQuirks
domQuirksGet (DOM -> DOMQuirks) -> ST s DOM -> ST s DOMQuirks
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s DOM
forall s. Parser s -> ST s DOM
getDOM Parser s
p
Bool -> ST s () -> ST s ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (DOMQuirks
q DOMQuirks -> DOMQuirks -> Bool
forall a. Eq a => a -> a -> Bool
/= DOMQuirks
DOMQuirksMode) ST s ()
closeP
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
Parser s -> ParserMode -> ST s ()
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"
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p (Token -> ST s ()) -> Token -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS -> Bool -> [TAttr] -> Token
TStart BS
"br" Bool
False []
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
x } | BS -> [BS] -> Bool
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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
"input" } -> do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
case BS -> Token -> Maybe BS
tokenGetAttrVal BS
"type" Token
t of
Just BS
v -> Bool -> ST s () -> ST s ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (BS -> BS
bsLower BS
v BS -> BS -> Bool
forall a. Eq a => a -> a -> Bool
/= BS
"hidden") (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ Parser s -> ST s ()
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
Maybe BS
Nothing -> Parser s -> ST s ()
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
x } | BS -> [BS] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"param", BS
"source", BS
"track"] -> do
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
"hr" } -> do
ST s ()
closeP
ST s ()
popMenuitem
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
Parser s -> ST s ()
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" }
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t'
TStart { tStartName :: Token -> BS
tStartName = BS
"textarea" } -> do
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
parserSkipNextLF Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
parserSetRCDATA Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
saveMode Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeText
TStart { tStartName :: Token -> BS
tStartName = BS
"xmp" } -> do
ST s ()
closeP
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertElementRAWTEXT Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"iframe" } -> do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertElementRAWTEXT Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"noembed" } ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertElementRAWTEXT Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"select" } -> do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
Set ParserMode
s <- Set ParserMode -> ST s (Set ParserMode)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Set ParserMode -> ST s (Set ParserMode))
-> Set ParserMode -> ST s (Set ParserMode)
forall a b. (a -> b) -> a -> b
$ [ParserMode] -> Set ParserMode
forall a. Ord a => [a] -> Set a
Set.fromList
[ ParserMode
ModeInTable, ParserMode
ModeInCaption, ParserMode
ModeInTableBody,
ParserMode
ModeInRow, ParserMode
ModeInCell ]
STRef s ParserMode -> ST s ParserMode
forall s a. STRef s a -> ST s a
rref STRef s ParserMode
parserInsertionMode ST s ParserMode -> (ParserMode -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \ParserMode
x -> Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p (ParserMode -> ST s ()) -> ParserMode -> ST s ()
forall a b. (a -> b) -> a -> b
$
if ParserMode -> Set ParserMode -> Bool
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 } | BS -> [BS] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"optgroup", BS
"option"] -> do
Parser s -> (DOMNode -> Bool) -> ST s ()
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopIf Parser s
p ((DOMNode -> Bool) -> ST s ()) -> (DOMNode -> Bool) -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS -> DOMNode -> Bool
elementName BS
"option"
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"menuitem" } -> do
ST s ()
popMenuitem
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x } | BS -> [BS] -> Bool
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"
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p DOMType
a) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
generateImpliedEndTags Parser s
p
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"ruby element not in scope"
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x } | BS -> [BS] -> Bool
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"
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInScope Parser s
p DOMType
a) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
Parser s -> BS -> ST s ()
forall s. Parser s -> BS -> ST s ()
generateImpliedEndTagsExcept Parser s
p BS
"rtc"
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a ST s Bool -> ST s Bool -> ST s Bool
forall (m :: * -> *). Monad m => m Bool -> m Bool -> m Bool
||^ Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
b) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"ruby or rtc element not in scope"
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"math" } -> do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertMathMLElement Parser s
p (Token -> ST s ()) -> (Token -> Token) -> Token -> ST s ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Token -> Token
adjustAttrForeign (Token -> Token) -> (Token -> Token) -> Token -> Token
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Token -> Token
adjustAttrMathML (Token -> ST s ()) -> Token -> ST s ()
forall a b. (a -> b) -> a -> b
$ Token
t
Bool -> ST s () -> ST s ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Token -> Bool
tStartClosed Token
t) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
"svg" } -> do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertSvgElement Parser s
p (Token -> ST s ()) -> (Token -> Token) -> Token -> ST s ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Token -> Token
adjustAttrForeign (Token -> Token) -> (Token -> Token) -> Token -> Token
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Token -> Token
adjustAttrSVG (Token -> ST s ()) -> Token -> ST s ()
forall a b. (a -> b) -> a -> b
$ Token
t
Bool -> ST s () -> ST s ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Token -> Bool
tStartClosed Token
t) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
x } | BS -> [BS] -> Bool
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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatReconstruct Parser s
p
Parser s -> Token -> ST s ()
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"
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInButtonScope Parser s
p DOMType
a) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ Parser s -> ST s ()
forall s. Parser s -> ST s ()
closeElementP Parser s
p
popMenuitem :: ST s ()
popMenuitem =
Parser s -> (DOMNode -> Bool) -> ST s ()
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopIf Parser s
p ((DOMNode -> Bool) -> ST s ()) -> (DOMNode -> Bool) -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS -> DOMNode -> Bool
elementName BS
"menuitem"
runAA :: BS -> ST s ()
runAA =
(BS -> ST s () -> ST s ()) -> ST s () -> BS -> ST s ()
forall a b c. (a -> b -> c) -> b -> a -> c
flip (Parser s -> BS -> ST s () -> ST s ()
forall s. Parser s -> BS -> ST s () -> ST s ()
adoptionAgencyRun Parser s
p) ST s ()
doAnyOtherEndTag
doAnyOtherEndTag :: ST s ()
doAnyOtherEndTag =
Parser s -> ST s [DOMType]
forall s. Parser s -> ST s [DOMType]
elementStackTypes Parser s
p ST s [DOMType] -> ([DOMType] -> ST s ()) -> ST s ()
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 [] = () -> ST s ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
f (DOMType
x:[DOMType]
xs)
| DOMType
x DOMType -> DOMType -> Bool
forall a. Eq a => a -> a -> Bool
== DOMType
a = do
Parser s -> BS -> ST s ()
forall s. Parser s -> BS -> ST s ()
generateImpliedEndTagsExcept Parser s
p BS
n
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
x) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node has wrong type"
Parser s -> ST s ()
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 =
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"in body " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
x
doModeText :: Parser s -> Token -> ST s ()
doModeText :: 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 {} ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p Token
t
Token
TEOF -> do
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) BS
"text eof"
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
restoreMode Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"script" } -> do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
restoreMode Parser s
p
Token
_otherwise -> do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
restoreMode Parser s
p
doModeInTable :: Parser s -> Token -> ST s ()
doModeInTable :: 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 <- Parser s -> [DOMType] -> ST s Bool
forall s. Parser s -> [DOMType] -> ST s Bool
currentNodeHasTypeIn Parser s
p ([DOMType] -> ST s Bool) -> [DOMType] -> ST s Bool
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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
pendingTableCharInit Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
saveMode Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTableText
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
else do
ST s ()
anythingElse
TComment {} ->
Parser s -> Token -> ST s ()
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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatAddMarker Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInCaption
TStart { tStartName :: Token -> BS
tStartName = BS
"colgroup" } -> do
ST s ()
clearToTableContext
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ParserMode -> ST s ()
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
Parser s -> BS -> ST s ()
forall s. Parser s -> BS -> ST s ()
insertHtmlElementNamed Parser s
p BS
x
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInColumnGroup
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x } | BS -> [BS] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"tbody", BS
"tfoot", BS
"thead"] -> do
ST s ()
clearToTableContext
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTableBody
TStart { tStartName :: Token -> BS
tStartName = BS
x } | BS -> [BS] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"td", BS
"th", BS
"tr"] -> do
ST s ()
clearToTableContext
Parser s -> BS -> ST s ()
forall s. Parser s -> BS -> ST s ()
insertHtmlElementNamed Parser s
p BS
"tbody"
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTableBody
Parser s -> Token -> ST s ()
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
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p DOMType
a) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
Parser s -> DOMType -> ST s ()
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
Parser s -> ST s ()
forall s. Parser s -> ST s ()
resetInsertionMode Parser s
p
Parser s -> Token -> ST s ()
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
Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p DOMType
a ST s Bool -> (Bool -> ST s ()) -> ST s ()
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
Parser s -> DOMType -> ST s ()
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
Parser s -> ST s ()
forall s. Parser s -> ST s ()
resetInsertionMode Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
x } | BS -> [BS] -> Bool
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 } | BS -> [BS] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"style", BS
"script", BS
"template"] ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"template" } ->
Parser s -> Token -> ST s ()
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) BS -> BS -> Bool
forall a. Eq a => a -> a -> Bool
/= BS
"hidden"
then ST s ()
anythingElse
else do
BS -> ST s ()
warn BS
"hidden input"
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ST s ()
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"
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (Parser s -> ST s Bool
forall s. Parser s -> ST s Bool
elementStackHasTemplate Parser s
p ST s Bool -> ST s Bool -> ST s Bool
forall (m :: * -> *). Monad m => m Bool -> m Bool -> m Bool
||^ Parser s -> ST s Bool
forall s. Parser s -> ST s Bool
formNotNull Parser s
p) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
saveForm Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Token
TEOF ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
Token
_otherwise ->
ST s ()
anythingElse
where
clearToTableContext :: ST s ()
clearToTableContext =
Parser s -> (DOMNode -> Bool) -> ST s ()
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopWhile Parser s
p ((DOMNode -> Bool) -> ST s ()) -> (DOMNode -> Bool) -> ST s ()
forall a b. (a -> b) -> a -> b
$ \DOMNode
x -> Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ DOMType -> [DOMType] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem (DOMNode -> DOMType
domNodeType DOMNode
x) ([DOMType] -> Bool) -> [DOMType] -> Bool
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"
Parser s -> ST s ()
forall s. Parser s -> ST s ()
fosterParentingSet Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
fosterParentingClear Parser s
p
warn :: BS -> ST s ()
warn BS
x =
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"in table " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
x
doModeInTableText :: Parser s -> Token -> ST s ()
doModeInTableText :: 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 {} ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
pendingTableCharAppend Parser s
p Token
t
Token
_otherwise -> do
[Token]
a <- Parser s -> ST s [Token]
forall s. Parser s -> ST s [Token]
pendingTableChars Parser s
p
if (Token -> Bool) -> [Token] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any (Bool -> Bool
not (Bool -> Bool) -> (Token -> Bool) -> Token -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word8 -> Bool
chrWhitespace (Word8 -> Bool) -> (Token -> Word8) -> Token -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Token -> Word8
tCharData) [Token]
a
then do
BS -> ST s ()
warn BS
"unexpected character"
Parser s -> ST s ()
forall s. Parser s -> ST s ()
fosterParentingSet Parser s
p
(Token -> ST s ()) -> [Token] -> ST s ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p) [Token]
a
Parser s -> ST s ()
forall s. Parser s -> ST s ()
fosterParentingClear Parser s
p
else do
(Token -> ST s ()) -> [Token] -> ST s ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p) [Token]
a
Parser s -> ST s ()
forall s. Parser s -> ST s ()
restoreMode Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
where
warn :: BS -> ST s ()
warn BS
x =
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"in table text " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
x
doModeInCaption :: Parser s -> Token -> ST s ()
doModeInCaption :: 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 } | BS -> [BS] -> Bool
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
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"table" } -> do
ST s ()
processCaption
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
x } | BS -> [BS] -> Bool
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 ->
Parser s -> Token -> ST s ()
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"
Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p DOMType
a ST s Bool -> (Bool -> ST s ()) -> ST s ()
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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
generateImpliedEndTags Parser s
p
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node is not a caption"
Parser s -> DOMType -> ST s ()
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatClear Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTable
warn :: BS -> ST s ()
warn BS
x =
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"in caption " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
x
doModeInColumnGroup :: Parser s -> Token -> ST s ()
doModeInColumnGroup :: 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 ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p Token
t
TComment {} ->
Parser s -> Token -> ST s ()
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" } ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"col" } -> do
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ST s ()
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
Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a ST s Bool -> (Bool -> ST s ()) -> ST s ()
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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ParserMode -> ST s ()
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" } ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"template" } ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
Token
TEOF ->
Parser s -> Token -> ST s ()
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"
Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a ST s Bool -> (Bool -> ST s ()) -> ST s ()
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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTable
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
where
warn :: BS -> ST s ()
warn BS
x =
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"in column group " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
x
doModeInTableBody :: Parser s -> Token -> ST s ()
doModeInTableBody :: 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
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInRow
TStart { tStartName :: Token -> BS
tStartName = BS
x } | BS -> [BS] -> Bool
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
Parser s -> BS -> ST s ()
forall s. Parser s -> BS -> ST s ()
insertHtmlElementNamed Parser s
p BS
"tr"
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInRow
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
x } | BS -> [BS] -> Bool
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
Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p DOMType
a ST s Bool -> (Bool -> ST s ()) -> ST s ()
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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTable
TStart { tStartName :: Token -> BS
tStartName = BS
x } | BS -> [BS] -> Bool
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 } | BS -> [BS] -> Bool
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 ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInTable Parser s
p Token
t
where
processElements :: ST s ()
processElements = do
(BS -> ST s Bool) -> [BS] -> ST s Bool
forall (m :: * -> *) a. Monad m => (a -> m Bool) -> [a] -> m Bool
anyM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p (DOMType -> ST s Bool) -> (BS -> DOMType) -> BS -> ST s Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BS -> DOMType
domMakeTypeHTML)
[BS
"tbody", BS
"tfoot", BS
"thead"] ST s Bool -> (Bool -> ST s ()) -> ST s ()
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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTable
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
clearToTableBodyContext :: ST s ()
clearToTableBodyContext =
Parser s -> (DOMNode -> Bool) -> ST s ()
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopWhile Parser s
p ((DOMNode -> Bool) -> ST s ()) -> (DOMNode -> Bool) -> ST s ()
forall a b. (a -> b) -> a -> b
$ \DOMNode
x -> Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ DOMType -> [DOMType] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem (DOMNode -> DOMType
domNodeType DOMNode
x) ([DOMType] -> Bool) -> [DOMType] -> Bool
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 =
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"in table body " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
x
doModeInRow :: Parser s -> Token -> ST s ()
doModeInRow :: 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 } | BS -> [BS] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [BS
"th", BS
"td"] -> do
ST s ()
clearToTableRowContext
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInCell
Parser s -> ST s ()
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 } | BS -> [BS] -> Bool
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
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"table" } -> do
ST s ()
processTr
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
x } | BS -> [BS] -> Bool
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"
Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p DOMType
a ST s Bool -> (Bool -> ST s ()) -> ST s ()
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 ->
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p DOMType
b) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
ST s ()
clearToTableRowContext
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTableBody
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
x } | BS -> [BS] -> Bool
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 ->
Parser s -> Token -> ST s ()
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"
Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p DOMType
a ST s Bool -> (Bool -> ST s ()) -> ST s ()
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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTableBody
clearToTableRowContext :: ST s ()
clearToTableRowContext =
Parser s -> (DOMNode -> Bool) -> ST s ()
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopWhile Parser s
p ((DOMNode -> Bool) -> ST s ()) -> (DOMNode -> Bool) -> ST s ()
forall a b. (a -> b) -> a -> b
$ \DOMNode
x -> Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ DOMType -> [DOMType] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem (DOMNode -> DOMType
domNodeType DOMNode
x) ([DOMType] -> Bool) -> [DOMType] -> Bool
forall a b. (a -> b) -> a -> b
$
[BS] -> [DOMType]
domTypesHTML [BS
"tr", BS
"template", BS
"html"]
warn :: BS -> ST s ()
warn BS
x =
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"in row " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
x
doModeInCell :: Parser s -> Token -> ST s ()
doModeInCell :: 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 } | BS -> [BS] -> Bool
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
Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p DOMType
a ST s Bool -> (Bool -> ST s ()) -> ST s ()
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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
generateImpliedEndTags Parser s
p
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
a) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"current node not " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
x
Parser s -> DOMType -> ST s ()
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatClear Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInRow
TStart { tStartName :: Token -> BS
tStartName = BS
x } | BS -> [BS] -> Bool
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
(BS -> ST s Bool) -> [BS] -> ST s Bool
forall (m :: * -> *) a. Monad m => (a -> m Bool) -> [a] -> m Bool
anyM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p (DOMType -> ST s Bool) -> (BS -> DOMType) -> BS -> ST s Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BS -> DOMType
domMakeTypeHTML) [BS
"td", BS
"th"] ST s Bool -> (Bool -> ST s ()) -> ST s ()
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
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
x } | BS -> [BS] -> Bool
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 } | BS -> [BS] -> Bool
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
Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p DOMType
a ST s Bool -> (Bool -> ST s ()) -> ST s ()
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
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
Token
_otherwise ->
Parser s -> Token -> ST s ()
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"]
Parser s -> ST s ()
forall s. Parser s -> ST s ()
generateImpliedEndTags Parser s
p
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (Parser s -> [DOMType] -> ST s Bool
forall s. Parser s -> [DOMType] -> ST s Bool
currentNodeHasTypeIn Parser s
p [DOMType]
a) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node is not td or th"
Parser s -> [DOMType] -> ST s ()
forall s. Parser s -> [DOMType] -> ST s ()
elementStackPopUntilTypeIn Parser s
p [DOMType]
a
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatClear Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInRow
warn :: BS -> ST s ()
warn BS
x =
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"in cell " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
x
doModeInSelect :: Parser s -> Token -> ST s ()
doModeInSelect :: 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 {} ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p Token
t
TComment {} ->
Parser s -> Token -> ST s ()
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" } ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = x :: BS
x@BS
"option" } -> do
Parser s -> (DOMNode -> Bool) -> ST s ()
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopIf Parser s
p ((DOMNode -> Bool) -> ST s ()) -> (DOMNode -> Bool) -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS -> DOMNode -> Bool
elementName BS
x
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = x :: BS
x@BS
"optgroup" } -> do
Parser s -> (DOMNode -> Bool) -> ST s ()
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopIf Parser s
p ((DOMNode -> Bool) -> ST s ()) -> (DOMNode -> Bool) -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS -> DOMNode -> Bool
elementName BS
"option"
Parser s -> (DOMNode -> Bool) -> ST s ()
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopIf Parser s
p ((DOMNode -> Bool) -> ST s ()) -> (DOMNode -> Bool) -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS -> DOMNode -> Bool
elementName BS
x
Parser s -> Token -> ST s ()
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 <- DOMID -> [DOMType] -> [DOMType]
forall a. DOMID -> [a] -> [a]
take DOMID
2 ([DOMType] -> [DOMType]) -> ST s [DOMType] -> ST s [DOMType]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s [DOMType]
forall s. Parser s -> ST s [DOMType]
elementStackTypes Parser s
p
Bool -> ST s () -> ST s ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when ([DOMType]
y [DOMType] -> [DOMType] -> Bool
forall a. Eq a => a -> a -> Bool
== [DOMType
a,DOMType
b]) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p DOMType
b ST s Bool -> (Bool -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"current node not " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
x
Bool
True ->
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
TEnd { tEndName :: Token -> BS
tEndName = x :: BS
x@BS
"option" } -> do
Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
currentNodeHasType Parser s
p (BS -> DOMType
domMakeTypeHTML BS
x) ST s Bool -> (Bool -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False ->
BS -> ST s ()
warn (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"current node not " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
x
Bool
True ->
Parser s -> ST s ()
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
Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInSelectScope Parser s
p DOMType
a ST s Bool -> (Bool -> ST s ()) -> ST s ()
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
Parser s -> DOMType -> ST s ()
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
Parser s -> ST s ()
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
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInSelectScope Parser s
p DOMType
a) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
Parser s -> DOMType -> ST s ()
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
Parser s -> ST s ()
forall s. Parser s -> ST s ()
resetInsertionMode Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
x } | BS -> [BS] -> Bool
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
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInSelectScope Parser s
p DOMType
a) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
Parser s -> DOMType -> ST s ()
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p DOMType
a
Parser s -> ST s ()
forall s. Parser s -> ST s ()
resetInsertionMode Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x } | BS -> [BS] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x
[BS
"script", BS
"template"] ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"template" } ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
Token
TEOF ->
Parser s -> Token -> ST s ()
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 =
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"in select " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
x
doModeInSelectInTable :: Parser s -> Token -> ST s ()
doModeInSelectInTable :: 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 } | BS -> [BS] -> Bool
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"
Parser s -> DOMType -> ST s ()
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p (DOMType -> ST s ()) -> DOMType -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS -> DOMType
domMakeTypeHTML BS
"select"
Parser s -> ST s ()
forall s. Parser s -> ST s ()
resetInsertionMode Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
x } | BS -> [BS] -> Bool
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"
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (Parser s -> DOMType -> ST s Bool
forall s. Parser s -> DOMType -> ST s Bool
elementInTableScope Parser s
p (DOMType -> ST s Bool) -> DOMType -> ST s Bool
forall a b. (a -> b) -> a -> b
$ BS -> DOMType
domMakeTypeHTML BS
x) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
Parser s -> DOMType -> ST s ()
forall s. Parser s -> DOMType -> ST s ()
elementStackPopUntilType Parser s
p (DOMType -> ST s ()) -> DOMType -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS -> DOMType
domMakeTypeHTML BS
"select"
Parser s -> ST s ()
forall s. Parser s -> ST s ()
resetInsertionMode Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
Token
_otherwise ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInSelect Parser s
p Token
t
where
warn :: BS -> ST s ()
warn BS
x =
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"in select in table " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
x
doModeInTemplate :: Parser s -> Token -> ST s ()
doModeInTemplate :: 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 {} ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TComment {} ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TDoctype {} ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x } | BS -> [BS] -> Bool
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"] ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"template" } ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x } | BS -> [BS] -> Bool
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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
templateModePop Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
templateModePush Parser s
p ParserMode
ModeInTable
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTable
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"col" } -> do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
templateModePop Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
templateModePush Parser s
p ParserMode
ModeInColumnGroup
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInColumnGroup
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"tr" } -> do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
templateModePop Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
templateModePush Parser s
p ParserMode
ModeInTableBody
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInTableBody
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
x } | BS -> [BS] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem BS
x [BS
"td", BS
"th"] -> do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
templateModePop Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
templateModePush Parser s
p ParserMode
ModeInRow
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInRow
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TStart {} -> do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
templateModePop Parser s
p
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
templateModePush Parser s
p ParserMode
ModeInBody
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInBody
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
TEnd {} ->
BS -> ST s ()
warn BS
"unexpected end tag"
Token
TEOF ->
Parser s -> ST s Bool
forall s. Parser s -> ST s Bool
elementStackMissingTemplate Parser s
p ST s Bool -> (Bool -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
True ->
Parser s -> ST s ()
forall s. Parser s -> ST s ()
parserSetDone Parser s
p
Bool
False -> do
BS -> ST s ()
warn BS
"template on stack"
Parser s -> ST s ()
forall s. Parser s -> ST s ()
activeFormatClear Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
templateModePop Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
resetInsertionMode Parser s
p
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
where
warn :: BS -> ST s ()
warn BS
x =
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"in template " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
x
doModeAfterBody :: Parser s -> Token -> ST s ()
doModeAfterBody :: 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 ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TComment {} -> do
DOMPos
x <- DOMID -> DOMPos
domPos (DOMID -> DOMPos)
-> (Maybe DOMID -> DOMID) -> Maybe DOMID -> DOMPos
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Maybe DOMID -> DOMID
forall a. HasCallStack => Maybe a -> a
fromJust (Maybe DOMID -> DOMPos) -> ST s (Maybe DOMID) -> ST s DOMPos
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s (Maybe DOMID)
forall s. Parser s -> ST s (Maybe DOMID)
lastNodeID Parser s
p
Parser s -> Token -> ST s DOMNode
forall s. Parser s -> Token -> ST s DOMNode
commentMake Parser s
p Token
t ST s DOMNode -> (DOMNode -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ST s DOMID -> ST s ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (ST s DOMID -> ST s ())
-> (DOMNode -> ST s DOMID) -> DOMNode -> ST s ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Parser s -> DOMPos -> DOMNode -> ST s DOMID
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" } ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"html" } ->
STRef s Bool -> ST s Bool
forall s a. STRef s a -> ST s a
rref STRef s Bool
parserFragmentMode ST s Bool -> (Bool -> ST s ()) -> ST s ()
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 ->
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeAfterAfterBody
Token
TEOF ->
Parser s -> ST s ()
forall s. Parser s -> ST s ()
parserSetDone Parser s
p
Token
_otherwise -> do
BS -> ST s ()
warn BS
"unexpected token"
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInBody
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
where
warn :: BS -> ST s ()
warn BS
x =
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"after body " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
x
doModeInFrameset :: Parser s -> Token -> ST s ()
doModeInFrameset :: 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 ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p Token
t
TComment {} ->
Parser s -> Token -> ST s ()
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" } ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"frameset" } ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"frameset" } -> do
Parser s -> BS -> ST s Bool
forall s. Parser s -> BS -> ST s Bool
currentNodeHasHTMLType Parser s
p BS
"html" ST s Bool -> (Bool -> ST s ()) -> ST s ()
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
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM (ST s Bool -> ST s Bool
forall (m :: * -> *). Functor m => m Bool -> m Bool
notM (STRef s Bool -> ST s Bool
forall s a. STRef s a -> ST s a
rref STRef s Bool
parserFragmentMode) ST s Bool -> ST s Bool -> ST s Bool
forall (m :: * -> *). Monad m => m Bool -> m Bool -> m Bool
&&^
ST s Bool -> ST s Bool
forall (m :: * -> *). Functor m => m Bool -> m Bool
notM (Parser s -> BS -> ST s Bool
forall s. Parser s -> BS -> ST s Bool
currentNodeHasHTMLType Parser s
p BS
"frameset")) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeAfterFrameset
TStart { tStartName :: Token -> BS
tStartName = BS
"frame" } -> do
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertHtmlElement Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
"noframes" } ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
Token
TEOF -> do
ST s Bool -> ST s () -> ST s ()
forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
unlessM (Parser s -> BS -> ST s Bool
forall s. Parser s -> BS -> ST s Bool
currentNodeHasHTMLType Parser s
p BS
"html") (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn BS
"current node is not html"
Parser s -> ST s ()
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 =
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"in frameset " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
x
doModeAfterFrameset :: Parser s -> Token -> ST s ()
doModeAfterFrameset :: 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 ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p Token
t
TComment {} ->
Parser s -> Token -> ST s ()
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" } ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TEnd { tEndName :: Token -> BS
tEndName = BS
"html" } ->
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeAfterAfterFrameset
TStart { tStartName :: Token -> BS
tStartName = BS
"noframes" } ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInHead Parser s
p Token
t
Token
TEOF ->
Parser s -> ST s ()
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 =
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"after frameset " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
x
doModeAfterAfterBody :: Parser s -> Token -> ST s ()
doModeAfterAfterBody :: 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 {} ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertDocComment Parser s
p Token
t
TDoctype {} ->
Parser s -> Token -> ST s ()
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 ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"html" } ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
Token
TEOF ->
Parser s -> ST s ()
forall s. Parser s -> ST s ()
parserSetDone Parser s
p
Token
_otherwise -> do
BS -> ST s ()
warn BS
"unexpected token"
Parser s -> ParserMode -> ST s ()
forall s. Parser s -> ParserMode -> ST s ()
setMode Parser s
p ParserMode
ModeInBody
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
reprocess Parser s
p Token
t
where
warn :: BS -> ST s ()
warn BS
x =
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"after after body " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
x
doModeAfterAfterFrameset :: Parser s -> Token -> ST s ()
doModeAfterAfterFrameset :: 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 {} ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertDocComment Parser s
p Token
t
TDoctype {} ->
Parser s -> Token -> ST s ()
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 ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
TStart { tStartName :: Token -> BS
tStartName = BS
"html" } ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doModeInBody Parser s
p Token
t
Token
TEOF ->
Parser s -> ST s ()
forall s. Parser s -> ST s ()
parserSetDone Parser s
p
TStart { tStartName :: Token -> BS
tStartName = BS
"noframes" } ->
Parser s -> Token -> ST s ()
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 =
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"after after frameset " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
x
doForeignContent :: Parser s -> Token -> ST s ()
doForeignContent :: 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 ->
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p Token
t
TChar {} -> do
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
insertChar Parser s
p Token
t
Parser s -> ST s ()
forall s. Parser s -> ST s ()
frameSetNotOK Parser s
p
TComment {} ->
Parser s -> Token -> ST s ()
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 } | BS -> [BS] -> Bool
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 BS -> BS -> Bool
forall a. Eq a => a -> a -> Bool
== BS
"font" Bool -> Bool -> Bool
&&
(BS -> Bool) -> [BS] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any ((BS -> Token -> Bool) -> Token -> BS -> Bool
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"
STRef s Bool -> ST s Bool
forall s a. STRef s a -> ST s a
rref STRef s Bool
parserFragmentMode ST s Bool -> (Bool -> ST s ()) -> ST s ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
True ->
ST s ()
anyOtherStartTag
Bool
False -> do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> (DOMNode -> Bool) -> ST s ()
forall s. Parser s -> (DOMNode -> Bool) -> ST s ()
elementStackPopWhile Parser s
p ((DOMNode -> Bool) -> ST s ()) -> (DOMNode -> Bool) -> ST s ()
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)
Parser s -> Token -> ST s ()
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 <- Bool -> (DOMNode -> Bool) -> Maybe DOMNode -> Bool
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Bool
False (DOMType -> DOMType -> Bool
forall a. Eq a => a -> a -> Bool
(==) DOMType
a (DOMType -> Bool) -> (DOMNode -> DOMType) -> DOMNode -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOMNode -> DOMType
domNodeType) (Maybe DOMNode -> Bool) -> ST s (Maybe DOMNode) -> ST s Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s (Maybe DOMNode)
forall s. Parser s -> ST s (Maybe DOMNode)
currentNode Parser s
p
if BS
n BS -> BS -> Bool
forall a. Eq a => a -> a -> Bool
== BS
s Bool -> Bool -> Bool
&& Bool
svg
then ST s ()
doScriptEndTag
else do
DOMNode
node <- Maybe DOMNode -> DOMNode
forall a. HasCallStack => Maybe a -> a
fromJust (Maybe DOMNode -> DOMNode) -> ST s (Maybe DOMNode) -> ST s DOMNode
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s (Maybe DOMNode)
forall s. Parser s -> ST s (Maybe DOMNode)
currentNode Parser s
p
let h :: DOMNode -> BS
h = BS -> BS
bsLower (BS -> BS) -> (DOMNode -> BS) -> DOMNode -> BS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DOMNode -> BS
domNodeElementName
nodeName :: BS
nodeName = DOMNode -> BS
h DOMNode
node
Bool -> ST s () -> ST s ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (BS
nodeName BS -> BS -> Bool
forall a. Eq a => a -> a -> Bool
/= BS
n) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$
BS -> ST s ()
warn (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$
BS
"bad end tag in foreign content ("
BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
nodeName BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
" /= " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> String -> BS
bcPack (BS -> String
forall a. Show a => a -> String
show BS
n) BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
")"
let f :: [DOMNode] -> ST s ()
f (DOMNode
x:[]) = () -> ST s ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
f (DOMNode
x:DOMNode
y:[DOMNode]
ys)
| DOMNode -> BS
h DOMNode
x BS -> BS -> Bool
forall a. Eq a => a -> a -> Bool
== BS
n =
Parser s -> DOMID -> ST s ()
forall s. Parser s -> DOMID -> ST s ()
elementStackPopUntilID Parser s
p (DOMID -> ST s ()) -> DOMID -> ST s ()
forall a b. (a -> b) -> a -> b
$ DOMNode -> DOMID
domNodeID DOMNode
node
| DOMNode -> Bool
domNodeIsHTML DOMNode
y =
Parser s -> Token -> ST s ()
forall s. Parser s -> Token -> ST s ()
doHtmlContent Parser s
p Token
t
| Bool
otherwise =
[DOMNode] -> ST s ()
f (DOMNode
yDOMNode -> [DOMNode] -> [DOMNode]
forall a. a -> [a] -> [a]
:[DOMNode]
ys)
Parser s -> ST s [DOMNode]
forall s. Parser s -> ST s [DOMNode]
elementStackNodes Parser s
p ST s [DOMNode] -> ([DOMNode] -> ST s ()) -> ST s ()
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) <- Parser s -> ST s (Maybe DOMNode)
forall s. Parser s -> ST s (Maybe DOMNode)
adjustedCurrentNode Parser s
p ST s (Maybe DOMNode)
-> (Maybe DOMNode -> ST s (Token, HTMLNamespace))
-> ST s (Token, HTMLNamespace)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Just DOMNode
a
| DOMNode -> Bool
domNodeIsMathML DOMNode
a ->
(Token, HTMLNamespace) -> ST s (Token, HTMLNamespace)
forall (f :: * -> *) a. Applicative f => a -> f a
pure ( Token -> Token
adjustAttrMathML Token
t
, DOMNode -> HTMLNamespace
domNodeElementNamespace DOMNode
a
)
| DOMNode -> Bool
domNodeIsSVG DOMNode
a ->
(Token, HTMLNamespace) -> ST s (Token, HTMLNamespace)
forall (f :: * -> *) a. Applicative f => a -> f a
pure ( Token -> Token
adjustElemSVG (Token -> Token) -> Token -> Token
forall a b. (a -> b) -> a -> b
$ Token -> Token
adjustAttrSVG Token
t
, DOMNode -> HTMLNamespace
domNodeElementNamespace DOMNode
a
)
Maybe DOMNode
Nothing ->
(Token, HTMLNamespace) -> ST s (Token, HTMLNamespace)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Token
t, HTMLNamespace
HTMLNamespaceHTML)
Parser s -> HTMLNamespace -> Token -> ST s ()
forall s. Parser s -> HTMLNamespace -> Token -> ST s ()
insertForeignElement Parser s
p HTMLNamespace
n (Token -> ST s ()) -> Token -> ST s ()
forall a b. (a -> b) -> a -> b
$ Token -> Token
adjustAttrForeign Token
t'
Bool -> ST s () -> ST s ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Token -> Bool
tStartClosed Token
t) (ST s () -> ST s ()) -> ST s () -> ST s ()
forall a b. (a -> b) -> a -> b
$ do
Bool
svg <- Bool -> (DOMNode -> Bool) -> Maybe DOMNode -> Bool
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Bool
False DOMNode -> Bool
domNodeIsSVG (Maybe DOMNode -> Bool) -> ST s (Maybe DOMNode) -> ST s Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser s -> ST s (Maybe DOMNode)
forall s. Parser s -> ST s (Maybe DOMNode)
currentNode Parser s
p
if Token -> BS
tStartName Token
t BS -> BS -> Bool
forall a. Eq a => a -> a -> Bool
== BS
"script" Bool -> Bool -> Bool
&& Bool
svg
then do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
ST s ()
doScriptEndTag
else do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
Parser s -> ST s ()
forall s. Parser s -> ST s ()
selfClosingAcknowledge Parser s
p
doScriptEndTag :: ST s ()
doScriptEndTag = do
Parser s -> ST s ()
forall s. Parser s -> ST s ()
elementStackPop Parser s
p
warn :: BS -> ST s ()
warn BS
x =
Parser s -> Maybe Token -> BS -> ST s ()
forall s. Parser s -> Maybe Token -> BS -> ST s ()
parseError Parser s
p (Token -> Maybe Token
forall a. a -> Maybe a
Just Token
t) (BS -> ST s ()) -> BS -> ST s ()
forall a b. (a -> b) -> a -> b
$ BS
"foreign content " BS -> BS -> BS
forall a. Semigroup a => a -> a -> a
<> BS
x