{-# OPTIONS_GHC-funbox-strict-fields #-} {-# LANGUAGE BangPatterns #-} {-# LANGUAGE OverloadedStrings #-} module HaskellWorks.Data.Xml.Internal.Blank ( blankXml , BlankData(..) ) where import Data.ByteString (ByteString) import Data.Word import Data.Word8 import HaskellWorks.Data.Xml.Internal.Words import Prelude import qualified Data.ByteString as BS type ExpectedChar = Word8 data BlankState = InXml | InTag | InAttrList | InCloseTag | InClose | InBang !Int | InString !ExpectedChar | InText | InMeta | InCdataTag | InCdata !Int | InRem !Int | InIdent data BlankData = BlankData { BlankData -> BlankState blankState :: !BlankState , BlankData -> Word8 blankA :: !Word8 , BlankData -> Word8 blankB :: !Word8 , BlankData -> ByteString blankC :: !ByteString } blankXml :: [ByteString] -> [ByteString] blankXml :: [ByteString] -> [ByteString] blankXml = ByteString -> BlankState -> [ByteString] -> [ByteString] blankXmlPlan1 ByteString BS.empty BlankState InXml blankXmlPlan1 :: ByteString -> BlankState -> [ByteString] -> [ByteString] blankXmlPlan1 :: ByteString -> BlankState -> [ByteString] -> [ByteString] blankXmlPlan1 ByteString as BlankState lastState [ByteString] is = case [ByteString] is of (ByteString bs:[ByteString] bss) -> do let cs :: ByteString cs = ByteString as ByteString -> ByteString -> ByteString forall a. Semigroup a => a -> a -> a <> ByteString bs case ByteString -> Maybe (Word8, ByteString) BS.uncons ByteString cs of Just (Word8 d, ByteString ds) -> case ByteString -> Maybe (Word8, ByteString) BS.uncons ByteString ds of Just (Word8 e, ByteString es) -> Bool -> Word8 -> Word8 -> ByteString -> BlankState -> [ByteString] -> [ByteString] blankXmlRun Bool False Word8 d Word8 e ByteString es BlankState lastState [ByteString] bss Maybe (Word8, ByteString) Nothing -> ByteString -> BlankState -> [ByteString] -> [ByteString] blankXmlPlan1 ByteString cs BlankState lastState [ByteString] bss Maybe (Word8, ByteString) Nothing -> ByteString -> BlankState -> [ByteString] -> [ByteString] blankXmlPlan1 ByteString cs BlankState lastState [ByteString] bss [] -> [(Word8 -> Word8) -> ByteString -> ByteString BS.map (Word8 -> Word8 -> Word8 forall a b. a -> b -> a const Word8 _space) ByteString as] blankXmlPlan2 :: Word8 -> Word8 -> BlankState -> [ByteString] -> [ByteString] blankXmlPlan2 :: Word8 -> Word8 -> BlankState -> [ByteString] -> [ByteString] blankXmlPlan2 Word8 a Word8 b BlankState lastState [ByteString] is = case [ByteString] is of (ByteString cs:[ByteString] css) -> Bool -> Word8 -> Word8 -> ByteString -> BlankState -> [ByteString] -> [ByteString] blankXmlRun Bool False Word8 a Word8 b ByteString cs BlankState lastState [ByteString] css [] -> Bool -> Word8 -> Word8 -> ByteString -> BlankState -> [ByteString] -> [ByteString] blankXmlRun Bool True Word8 a Word8 b ([Word8] -> ByteString BS.pack [Word8 _space, Word8 _space]) BlankState lastState [] blankXmlRun :: Bool -> Word8 -> Word8 -> ByteString -> BlankState -> [ByteString] -> [ByteString] blankXmlRun :: Bool -> Word8 -> Word8 -> ByteString -> BlankState -> [ByteString] -> [ByteString] blankXmlRun Bool done Word8 a Word8 b ByteString cs BlankState lastState [ByteString] is = do let (!ByteString ds, Maybe BlankData mState) = Int -> (BlankData -> Maybe (Word8, BlankData)) -> BlankData -> (ByteString, Maybe BlankData) forall a. Int -> (a -> Maybe (Word8, a)) -> a -> (ByteString, Maybe a) BS.unfoldrN (ByteString -> Int BS.length ByteString cs) BlankData -> Maybe (Word8, BlankData) blankByteString (BlankState -> Word8 -> Word8 -> ByteString -> BlankData BlankData BlankState lastState Word8 a Word8 b ByteString cs) case Maybe BlankData mState of Just (BlankData !BlankState nextState Word8 _ Word8 _ ByteString _) -> do let (Word8 yy, Word8 zz) = case ByteString -> Maybe (ByteString, Word8) BS.unsnoc ByteString cs of Just (ByteString ys, Word8 z) -> case ByteString -> Maybe (ByteString, Word8) BS.unsnoc ByteString ys of Just (ByteString _, Word8 y) -> (Word8 y, Word8 z) Maybe (ByteString, Word8) Nothing -> (Word8 b, Word8 z) Maybe (ByteString, Word8) Nothing -> (Word8 a, Word8 b) if Bool done then [ByteString ds] else ByteString dsByteString -> [ByteString] -> [ByteString] forall a. a -> [a] -> [a] :Word8 -> Word8 -> BlankState -> [ByteString] -> [ByteString] blankXmlPlan2 Word8 yy Word8 zz BlankState nextState [ByteString] is Maybe BlankData Nothing -> [Char] -> [ByteString] forall a. HasCallStack => [Char] -> a error [Char] "No state: blankXmlRun" mkNext :: Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext :: Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 w BlankState s Word8 a ByteString bs = case ByteString -> Maybe (Word8, ByteString) BS.uncons ByteString bs of Just (Word8 b, ByteString cs) -> (Word8, BlankData) -> Maybe (Word8, BlankData) forall a. a -> Maybe a Just (Word8 w, BlankState -> Word8 -> Word8 -> ByteString -> BlankData BlankData BlankState s Word8 a Word8 b ByteString cs) Maybe (Word8, ByteString) Nothing -> [Char] -> Maybe (Word8, BlankData) forall a. HasCallStack => [Char] -> a error [Char] "This should never happen" {-# INLINE mkNext #-} blankByteString :: BlankData -> Maybe (Word8, BlankData) blankByteString :: BlankData -> Maybe (Word8, BlankData) blankByteString (BlankData BlankState InXml Word8 a Word8 b ByteString cs) | Word8 -> Word8 -> Bool isMetaStart Word8 a Word8 b = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _bracketleft BlankState InMeta Word8 b ByteString cs blankByteString (BlankData BlankState InXml Word8 a Word8 b ByteString cs) | Word8 -> Word8 -> Bool isEndTag Word8 a Word8 b = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space BlankState InCloseTag Word8 b ByteString cs blankByteString (BlankData BlankState InXml Word8 a Word8 b ByteString cs) | Word8 -> Bool isTextStart Word8 a = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _t BlankState InText Word8 b ByteString cs blankByteString (BlankData BlankState InXml Word8 a Word8 b ByteString cs) | Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _less = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _less BlankState InTag Word8 b ByteString cs blankByteString (BlankData BlankState InXml Word8 a Word8 b ByteString cs) | Word8 -> Bool isSpace Word8 a = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 a BlankState InXml Word8 b ByteString cs blankByteString (BlankData BlankState InXml Word8 _ Word8 b ByteString cs) = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space BlankState InXml Word8 b ByteString cs blankByteString (BlankData BlankState InTag Word8 a Word8 b ByteString cs) | Word8 -> Bool isSpace Word8 a = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _parenleft BlankState InAttrList Word8 b ByteString cs blankByteString (BlankData BlankState InTag Word8 a Word8 b ByteString cs) | Word8 -> Word8 -> Bool isTagClose Word8 a Word8 b = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space BlankState InClose Word8 b ByteString cs blankByteString (BlankData BlankState InTag Word8 a Word8 b ByteString cs) | Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _greater = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space BlankState InXml Word8 b ByteString cs blankByteString (BlankData BlankState InTag Word8 a Word8 b ByteString cs) | Word8 -> Bool isSpace Word8 a = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 a BlankState InTag Word8 b ByteString cs blankByteString (BlankData BlankState InTag Word8 _ Word8 b ByteString cs) = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space BlankState InTag Word8 b ByteString cs blankByteString (BlankData BlankState InCloseTag Word8 a Word8 b ByteString cs) | Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _greater = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _greater BlankState InXml Word8 b ByteString cs blankByteString (BlankData BlankState InCloseTag Word8 a Word8 b ByteString cs) | Word8 -> Bool isSpace Word8 a = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 a BlankState InCloseTag Word8 b ByteString cs blankByteString (BlankData BlankState InCloseTag Word8 _ Word8 b ByteString cs) = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space BlankState InCloseTag Word8 b ByteString cs blankByteString (BlankData BlankState InAttrList Word8 a Word8 b ByteString cs) | Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _greater = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _parenright BlankState InXml Word8 b ByteString cs blankByteString (BlankData BlankState InAttrList Word8 a Word8 b ByteString cs) | Word8 -> Word8 -> Bool isTagClose Word8 a Word8 b = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _parenright BlankState InClose Word8 b ByteString cs blankByteString (BlankData BlankState InAttrList Word8 a Word8 b ByteString cs) | Word8 -> Bool isNameStartChar Word8 a = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _a BlankState InIdent Word8 b ByteString cs blankByteString (BlankData BlankState InAttrList Word8 a Word8 b ByteString cs) | Word8 -> Bool isQuote Word8 a = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _v (Word8 -> BlankState InString Word8 a) Word8 b ByteString cs blankByteString (BlankData BlankState InAttrList Word8 a Word8 b ByteString cs) | Word8 -> Bool isSpace Word8 a = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 a BlankState InAttrList Word8 b ByteString cs blankByteString (BlankData BlankState InAttrList Word8 _ Word8 b ByteString cs) = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space BlankState InAttrList Word8 b ByteString cs blankByteString (BlankData BlankState InClose Word8 _ Word8 b ByteString cs) = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _greater BlankState InXml Word8 b ByteString cs blankByteString (BlankData BlankState InIdent Word8 a Word8 b ByteString cs) | Word8 -> Bool isNameChar Word8 a = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space BlankState InIdent Word8 b ByteString cs blankByteString (BlankData BlankState InIdent Word8 a Word8 b ByteString cs) | Word8 -> Bool isSpace Word8 a = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space BlankState InAttrList Word8 b ByteString cs blankByteString (BlankData BlankState InIdent Word8 a Word8 b ByteString cs) | Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _equal = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space BlankState InAttrList Word8 b ByteString cs blankByteString (BlankData BlankState InIdent Word8 a Word8 b ByteString cs) | Word8 -> Bool isSpace Word8 a = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 a BlankState InAttrList Word8 b ByteString cs blankByteString (BlankData BlankState InIdent Word8 _ Word8 b ByteString cs) = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space BlankState InAttrList Word8 b ByteString cs blankByteString (BlankData (InString Word8 q ) Word8 a Word8 b ByteString cs) | Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 q = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space BlankState InAttrList Word8 b ByteString cs blankByteString (BlankData (InString Word8 q ) Word8 a Word8 b ByteString cs) | Word8 -> Bool isSpace Word8 a = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 a (Word8 -> BlankState InString Word8 q) Word8 b ByteString cs blankByteString (BlankData (InString Word8 q ) Word8 _ Word8 b ByteString cs) = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space (Word8 -> BlankState InString Word8 q) Word8 b ByteString cs blankByteString (BlankData BlankState InText Word8 a Word8 b ByteString cs) | Word8 -> Word8 -> Bool isEndTag Word8 a Word8 b = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space BlankState InCloseTag Word8 b ByteString cs blankByteString (BlankData BlankState InText Word8 _ Word8 b ByteString cs) | Word8 b Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _less = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space BlankState InXml Word8 b ByteString cs blankByteString (BlankData BlankState InText Word8 a Word8 b ByteString cs) | Word8 -> Bool isSpace Word8 a = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 a BlankState InText Word8 b ByteString cs blankByteString (BlankData BlankState InText Word8 _ Word8 b ByteString cs) = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space BlankState InText Word8 b ByteString cs blankByteString (BlankData BlankState InMeta Word8 a Word8 b ByteString cs) | Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _exclam = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space BlankState InMeta Word8 b ByteString cs blankByteString (BlankData BlankState InMeta Word8 a Word8 b ByteString cs) | Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _hyphen = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space (Int -> BlankState InRem Int 0) Word8 b ByteString cs blankByteString (BlankData BlankState InMeta Word8 a Word8 b ByteString cs) | Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _bracketleft = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space BlankState InCdataTag Word8 b ByteString cs blankByteString (BlankData BlankState InMeta Word8 a Word8 b ByteString cs) | Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _greater = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _bracketright BlankState InXml Word8 b ByteString cs blankByteString (BlankData BlankState InMeta Word8 a Word8 b ByteString cs) | Word8 -> Bool isSpace Word8 a = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 a (Int -> BlankState InBang Int 1) Word8 b ByteString cs blankByteString (BlankData BlankState InMeta Word8 _ Word8 b ByteString cs) = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space (Int -> BlankState InBang Int 1) Word8 b ByteString cs blankByteString (BlankData BlankState InCdataTag Word8 a Word8 b ByteString cs) | Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _bracketleft = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space (Int -> BlankState InCdata Int 0) Word8 b ByteString cs blankByteString (BlankData BlankState InCdataTag Word8 a Word8 b ByteString cs) | Word8 -> Bool isSpace Word8 a = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 a BlankState InCdataTag Word8 b ByteString cs blankByteString (BlankData BlankState InCdataTag Word8 _ Word8 b ByteString cs) = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space BlankState InCdataTag Word8 b ByteString cs blankByteString (BlankData (InCdata Int n ) Word8 a Word8 b ByteString cs) | Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _greater Bool -> Bool -> Bool && Int n Int -> Int -> Bool forall a. Ord a => a -> a -> Bool >= Int 2 = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _bracketright BlankState InXml Word8 b ByteString cs blankByteString (BlankData (InCdata Int n ) Word8 a Word8 b ByteString cs) | Word8 -> Word8 -> Bool isCdataEnd Word8 a Word8 b Bool -> Bool -> Bool && Int n Int -> Int -> Bool forall a. Ord a => a -> a -> Bool > Int 0 = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space (Int -> BlankState InCdata (Int nInt -> Int -> Int forall a. Num a => a -> a -> a +Int 1)) Word8 b ByteString cs blankByteString (BlankData (InCdata Int n ) Word8 a Word8 b ByteString cs) | Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _bracketright = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space (Int -> BlankState InCdata (Int nInt -> Int -> Int forall a. Num a => a -> a -> a +Int 1)) Word8 b ByteString cs blankByteString (BlankData (InCdata Int _ ) Word8 a Word8 b ByteString cs) | Word8 -> Bool isSpace Word8 a = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 a (Int -> BlankState InCdata Int 0) Word8 b ByteString cs blankByteString (BlankData (InCdata Int _ ) Word8 _ Word8 b ByteString cs) = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space (Int -> BlankState InCdata Int 0) Word8 b ByteString cs blankByteString (BlankData (InRem Int n ) Word8 a Word8 b ByteString cs) | Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _greater Bool -> Bool -> Bool && Int n Int -> Int -> Bool forall a. Ord a => a -> a -> Bool >= Int 2 = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _bracketright BlankState InXml Word8 b ByteString cs blankByteString (BlankData (InRem Int n ) Word8 a Word8 b ByteString cs) | Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _hyphen = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space (Int -> BlankState InRem (Int nInt -> Int -> Int forall a. Num a => a -> a -> a +Int 1)) Word8 b ByteString cs blankByteString (BlankData (InRem Int _ ) Word8 a Word8 b ByteString cs) | Word8 -> Bool isSpace Word8 a = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 a (Int -> BlankState InRem Int 0) Word8 b ByteString cs blankByteString (BlankData (InRem Int _ ) Word8 _ Word8 b ByteString cs) = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space (Int -> BlankState InRem Int 0) Word8 b ByteString cs blankByteString (BlankData (InBang Int n ) Word8 a Word8 b ByteString cs) | Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _less = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _bracketleft (Int -> BlankState InBang (Int nInt -> Int -> Int forall a. Num a => a -> a -> a +Int 1)) Word8 b ByteString cs blankByteString (BlankData (InBang Int n ) Word8 a Word8 b ByteString cs) | Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _greater Bool -> Bool -> Bool && Int n Int -> Int -> Bool forall a. Eq a => a -> a -> Bool == Int 1 = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _bracketright BlankState InXml Word8 b ByteString cs blankByteString (BlankData (InBang Int n ) Word8 a Word8 b ByteString cs) | Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _greater = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _bracketright (Int -> BlankState InBang (Int nInt -> Int -> Int forall a. Num a => a -> a -> a -Int 1)) Word8 b ByteString cs blankByteString (BlankData (InBang Int n ) Word8 a Word8 b ByteString cs) | Word8 -> Bool isSpace Word8 a = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 a (Int -> BlankState InBang Int n) Word8 b ByteString cs blankByteString (BlankData (InBang Int n ) Word8 _ Word8 b ByteString cs) = Word8 -> BlankState -> Word8 -> ByteString -> Maybe (Word8, BlankData) mkNext Word8 _space (Int -> BlankState InBang Int n) Word8 b ByteString cs {-# INLINE blankByteString #-} isEndTag :: Word8 -> Word8 -> Bool isEndTag :: Word8 -> Word8 -> Bool isEndTag Word8 a Word8 b = Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _less Bool -> Bool -> Bool && Word8 b Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _slash {-# INLINE isEndTag #-} isTagClose :: Word8 -> Word8 -> Bool isTagClose :: Word8 -> Word8 -> Bool isTagClose Word8 a Word8 b = Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _slash Bool -> Bool -> Bool || ((Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _slash Bool -> Bool -> Bool || Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _question) Bool -> Bool -> Bool && Word8 b Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _greater) {-# INLINE isTagClose #-} isMetaStart :: Word8 -> Word8 -> Bool isMetaStart :: Word8 -> Word8 -> Bool isMetaStart Word8 a Word8 b = Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _less Bool -> Bool -> Bool && Word8 b Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _exclam {-# INLINE isMetaStart #-} isCdataEnd :: Word8 -> Word8 -> Bool isCdataEnd :: Word8 -> Word8 -> Bool isCdataEnd Word8 a Word8 b = Word8 a Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _bracketright Bool -> Bool -> Bool && Word8 b Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 _greater {-# INLINE isCdataEnd #-}