{-# HLINT ignore "Use ." #-}
module Web.Mangrove.Parse.Tokenize.ScriptData
( tokenScriptData
) where
import Web.Mangrove.Parse.Common.Error
import Web.Mangrove.Parse.Tokenize.Common
import Web.Mangrove.Parse.Tokenize.ScriptDataEscaped
import Web.Mangrove.Parse.Tokenize.Tag
import Web.Willow.Common.Encoding.Character
tokenScriptData :: Tokenizer [TokenizerOutput Token]
tokenScriptData :: Tokenizer [TokenizerOutput Token]
tokenScriptData = Maybe [([ParseError], Token)]
-> [SwitchCase TokenizerInput Tokenizer (WrappedOutputs Token)]
-> Tokenizer [TokenizerOutput Token]
forall out.
Maybe [([ParseError], out)]
-> [SwitchCase TokenizerInput Tokenizer (WrappedOutputs out)]
-> Tokenizer [TokenizerOutput out]
tokenizers Maybe [([ParseError], Token)]
forall a. Maybe a
Nothing
[ (Char -> Bool)
-> Tokenizer [TokenizerOutput Token]
-> SwitchCase TokenizerInput Tokenizer (WrappedOutputs Token)
ifs_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'<') Tokenizer [TokenizerOutput Token]
tokenScriptDataLessThanSign
, (Char -> Bool)
-> Tokenizer [TokenizerOutput Token]
-> SwitchCase TokenizerInput Tokenizer (WrappedOutputs Token)
ifs_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'\NUL') (Tokenizer [TokenizerOutput Token]
-> SwitchCase TokenizerInput Tokenizer (WrappedOutputs Token))
-> Tokenizer [TokenizerOutput Token]
-> SwitchCase TokenizerInput Tokenizer (WrappedOutputs Token)
forall a b. (a -> b) -> a -> b
$ ([ParseError], Token) -> Tokenizer [TokenizerOutput Token]
emit' ([ParseError
UnexpectedNullCharacter], Char -> Token
Character Char
replacementChar)
, (Char -> Tokenizer [TokenizerOutput Token])
-> SwitchCase TokenizerInput Tokenizer (WrappedOutputs Token)
elsesChar ((Char -> Tokenizer [TokenizerOutput Token])
-> SwitchCase TokenizerInput Tokenizer (WrappedOutputs Token))
-> (Char -> Tokenizer [TokenizerOutput Token])
-> SwitchCase TokenizerInput Tokenizer (WrappedOutputs Token)
forall a b. (a -> b) -> a -> b
$ \Char
c -> ([ParseError], Token) -> Tokenizer [TokenizerOutput Token]
emit' ([], Char -> Token
Character Char
c)
]
tokenScriptDataLessThanSign :: Tokenizer [TokenizerOutput Token]
tokenScriptDataLessThanSign :: Tokenizer [TokenizerOutput Token]
tokenScriptDataLessThanSign = Maybe [([ParseError], Token)]
-> [SwitchCase TokenizerInput Tokenizer (WrappedOutputs Token)]
-> Tokenizer [TokenizerOutput Token]
forall out.
Maybe [([ParseError], out)]
-> [SwitchCase TokenizerInput Tokenizer (WrappedOutputs out)]
-> Tokenizer [TokenizerOutput out]
tokenizers ([([ParseError], Token)] -> Maybe [([ParseError], Token)]
forall a. a -> Maybe a
Just [([], Char -> Token
Character Char
'<')])
[ (Char -> Bool)
-> Tokenizer [TokenizerOutput Token]
-> SwitchCase TokenizerInput Tokenizer (WrappedOutputs Token)
ifs_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'/') Tokenizer [TokenizerOutput Token]
tokenAppropriateEndTagOpen
, (Char -> Bool)
-> Tokenizer [TokenizerOutput Token]
-> SwitchCase TokenizerInput Tokenizer (WrappedOutputs Token)
ifs_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'!') (Tokenizer [TokenizerOutput Token]
-> SwitchCase TokenizerInput Tokenizer (WrappedOutputs Token))
-> Tokenizer [TokenizerOutput Token]
-> SwitchCase TokenizerInput Tokenizer (WrappedOutputs Token)
forall a b. (a -> b) -> a -> b
$ ([ParseError], Token)
-> Tokenizer [TokenizerOutput Token]
-> Tokenizer [TokenizerOutput Token]
consEmit ([], Char -> Token
Character Char
'<') (Tokenizer [TokenizerOutput Token]
-> Tokenizer [TokenizerOutput Token])
-> (Tokenizer [TokenizerOutput Token]
-> Tokenizer [TokenizerOutput Token])
-> Tokenizer [TokenizerOutput Token]
-> Tokenizer [TokenizerOutput Token]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([ParseError], Token)
-> Tokenizer [TokenizerOutput Token]
-> Tokenizer [TokenizerOutput Token]
consEmit ([], Char -> Token
Character Char
'!') (Tokenizer [TokenizerOutput Token]
-> Tokenizer [TokenizerOutput Token])
-> Tokenizer [TokenizerOutput Token]
-> Tokenizer [TokenizerOutput Token]
forall a b. (a -> b) -> a -> b
$
Tokenizer [TokenizerOutput Token]
tokenScriptDataEscapeStart
, Tokenizer [TokenizerOutput Token]
-> SwitchCase TokenizerInput Tokenizer (WrappedOutputs Token)
forall out.
Tokenizer out -> SwitchCase TokenizerInput Tokenizer (Wrapped out)
elsePush_ (Tokenizer [TokenizerOutput Token]
-> SwitchCase TokenizerInput Tokenizer (WrappedOutputs Token))
-> Tokenizer [TokenizerOutput Token]
-> SwitchCase TokenizerInput Tokenizer (WrappedOutputs Token)
forall a b. (a -> b) -> a -> b
$ ([ParseError], Token) -> Tokenizer [TokenizerOutput Token]
emit' ([], Char -> Token
Character Char
'<')
]