module Web.Mangrove.Parse.Tokenize.PlainText
( tokenPlainText
) where
import Web.Mangrove.Parse.Common.Error
import Web.Mangrove.Parse.Tokenize.Common
import Web.Willow.Common.Encoding.Character
tokenPlainText :: Tokenizer (TokenizerOutput Token)
tokenPlainText :: Tokenizer (TokenizerOutput Token)
tokenPlainText = Maybe ([ParseError], Token)
-> [SwitchCase TokenizerInput Tokenizer (WrappedOutput Token)]
-> Tokenizer (TokenizerOutput Token)
forall out.
Maybe ([ParseError], out)
-> [SwitchCase TokenizerInput Tokenizer (WrappedOutput out)]
-> Tokenizer (TokenizerOutput out)
tokenizer Maybe ([ParseError], Token)
forall a. Maybe a
Nothing
[ (Char -> Bool)
-> Tokenizer (TokenizerOutput Token)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput Token)
forall out.
(Char -> Bool)
-> Tokenizer (TokenizerOutput out)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
if_ (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'\NUL') (Tokenizer (TokenizerOutput Token)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput Token))
-> Tokenizer (TokenizerOutput Token)
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput 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 (WrappedOutput Token)
forall out.
(Char -> Tokenizer (TokenizerOutput out))
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput out)
elseChar ((Char -> Tokenizer (TokenizerOutput Token))
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput Token))
-> (Char -> Tokenizer (TokenizerOutput Token))
-> SwitchCase TokenizerInput Tokenizer (WrappedOutput Token)
forall a b. (a -> b) -> a -> b
$ \Char
c -> ([ParseError], Token) -> Tokenizer (TokenizerOutput Token)
emit ([], Char -> Token
Character Char
c)
]