java-character-0.0.4: src/Language/Java/Character/IsWhitespace.hs
-- | Simulates the @isWhitespace@ Java method. <http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#isWhitespace%28int%29>
module Language.Java.Character.IsWhitespace
(
IsWhitespace(..)
) where
import Data.Char
import Data.Word
import Data.Set.Diet(Diet)
import qualified Data.Set.Diet as S
-- | Instances simulate Java characters and provide a decision on simulating @isWhitespace@.
class Enum c => IsWhitespace c where
isWhitespace ::
c
-> Bool
isNotWhitespace ::
c
-> Bool
isNotWhitespace =
not . isWhitespace
instance IsWhitespace Char where
isWhitespace c =
ord c `S.member` isWhitespaceSet
instance IsWhitespace Int where
isWhitespace c =
c `S.member` isWhitespaceSet
instance IsWhitespace Integer where
isWhitespace c =
c `S.member` isWhitespaceSet
instance IsWhitespace Word8 where
isWhitespace c =
c `S.member` isWhitespaceSet
instance IsWhitespace Word16 where
isWhitespace c =
c `S.member` isWhitespaceSet
instance IsWhitespace Word32 where
isWhitespace c =
c `S.member` isWhitespaceSet
instance IsWhitespace Word64 where
isWhitespace c =
c `S.member` isWhitespaceSet
isWhitespaceSet ::
(Num a, Enum a, Ord a) =>
Diet a
isWhitespaceSet =
let r = [
[9..13]
, [28..32]
, [5760]
, [6158]
, [8192..8198]
, [8200..8203]
, [8232..8233]
, [8287]
, [12288]
]
in S.fromList . concat $ r