module HaskellWorks.Data.Xml.Internal.Words where

import Data.Word
import Data.Word8

isLeadingDigit :: Word8 -> Bool
isLeadingDigit :: Word8 -> Bool
isLeadingDigit Word8
w = Word8
w Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
_hyphen Bool -> Bool -> Bool
|| (Word8
w Word8 -> Word8 -> Bool
forall a. Ord a => a -> a -> Bool
>= Word8
_0 Bool -> Bool -> Bool
&& Word8
w Word8 -> Word8 -> Bool
forall a. Ord a => a -> a -> Bool
<= Word8
_9)

isTrailingDigit :: Word8 -> Bool
isTrailingDigit :: Word8 -> Bool
isTrailingDigit Word8
w = Word8
w Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
_plus Bool -> Bool -> Bool
|| Word8
w Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
_hyphen Bool -> Bool -> Bool
|| (Word8
w Word8 -> Word8 -> Bool
forall a. Ord a => a -> a -> Bool
>= Word8
_0 Bool -> Bool -> Bool
&& Word8
w Word8 -> Word8 -> Bool
forall a. Ord a => a -> a -> Bool
<= Word8
_9) Bool -> Bool -> Bool
|| Word8
w Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
_period Bool -> Bool -> Bool
|| Word8
w Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
_E Bool -> Bool -> Bool
|| Word8
w Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
_e

isAlphabetic :: Word8 -> Bool
isAlphabetic :: Word8 -> Bool
isAlphabetic Word8
w = (Word8
w Word8 -> Word8 -> Bool
forall a. Ord a => a -> a -> Bool
>= Word8
_A Bool -> Bool -> Bool
&& Word8
w Word8 -> Word8 -> Bool
forall a. Ord a => a -> a -> Bool
<= Word8
_Z) Bool -> Bool -> Bool
|| (Word8
w Word8 -> Word8 -> Bool
forall a. Ord a => a -> a -> Bool
>= Word8
_a Bool -> Bool -> Bool
&& Word8
w Word8 -> Word8 -> Bool
forall a. Ord a => a -> a -> Bool
<= Word8
_z)

isQuote :: Word8 -> Bool
isQuote :: Word8 -> Bool
isQuote Word8
w = Word8
w Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
_quotedbl Bool -> Bool -> Bool
|| Word8
w Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
_quotesingle

isNameStartChar :: Word8 -> Bool
isNameStartChar :: Word8 -> Bool
isNameStartChar Word8
w = Word8
w Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
_underscore Bool -> Bool -> Bool
|| Word8
w Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
_colon Bool -> Bool -> Bool
|| Word8 -> Bool
isAlphabetic Word8
w
                 Bool -> Bool -> Bool
|| Word8
w Word8 -> (Word8, Word8) -> Bool
`isIn` (Word8
0xc0, Word8
0xd6)
                 Bool -> Bool -> Bool
|| Word8
w Word8 -> (Word8, Word8) -> Bool
`isIn` (Word8
0xd8, Word8
0xf6)
                 Bool -> Bool -> Bool
|| Word8
w Word8 -> (Word8, Word8) -> Bool
`isIn` (Word8
0xf8, Word8
0xff)

isNameChar :: Word8 -> Bool
isNameChar :: Word8 -> Bool
isNameChar Word8
w = Word8 -> Bool
isNameStartChar Word8
w Bool -> Bool -> Bool
|| Word8
w Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
_hyphen Bool -> Bool -> Bool
|| Word8
w Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
_period
            Bool -> Bool -> Bool
|| Word8
w Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
0xb7 Bool -> Bool -> Bool
|| Word8
w Word8 -> (Word8, Word8) -> Bool
`isIn` (Word8
0, Word8
9)

isXml :: Word8 -> Bool
isXml :: Word8 -> Bool
isXml Word8
w = Word8
w Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
_less Bool -> Bool -> Bool
|| Word8
w Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
_greater

isTextStart :: Word8 -> Bool
isTextStart :: Word8 -> Bool
isTextStart Word8
w = Bool -> Bool
not (Word8 -> Bool
isSpace Word8
w) Bool -> Bool -> Bool
&& Word8
w Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
/= Word8
_less Bool -> Bool -> Bool
&& Word8
w Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
/= Word8
_greater

isIn :: Word8 -> (Word8, Word8) -> Bool
isIn :: Word8 -> (Word8, Word8) -> Bool
isIn Word8
w (Word8
s, Word8
e) = Word8
w Word8 -> Word8 -> Bool
forall a. Ord a => a -> a -> Bool
>= Word8
s Bool -> Bool -> Bool
&& Word8
w Word8 -> Word8 -> Bool
forall a. Ord a => a -> a -> Bool
<= Word8
e
{-# INLINE isIn #-}