/
Gen.purs
35 lines (26 loc) · 1.4 KB
/
Gen.purs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
module Data.Char.Gen where
import Prelude
import Control.Monad.Gen (class MonadGen, chooseInt, oneOf)
import Data.Enum (toEnumWithDefaults)
import Data.NonEmpty ((:|))
-- | Generates a character of the Unicode basic multilingual plane.
genUnicodeChar :: forall m. MonadGen m => m Char
genUnicodeChar = toEnumWithDefaults bottom top <$> chooseInt 0 65536
-- | Generates a character in the ASCII character set, excluding control codes.
genAsciiChar :: forall m. MonadGen m => m Char
genAsciiChar = toEnumWithDefaults bottom top <$> chooseInt 32 127
-- | Generates a character in the ASCII character set.
genAsciiChar' :: forall m. MonadGen m => m Char
genAsciiChar' = toEnumWithDefaults bottom top <$> chooseInt 0 127
-- | Generates a character that is a numeric digit.
genDigitChar :: forall m. MonadGen m => m Char
genDigitChar = toEnumWithDefaults bottom top <$> chooseInt 48 57
-- | Generates a character from the basic latin alphabet.
genAlpha :: forall m. MonadGen m => m Char
genAlpha = oneOf (genAlphaLowercase :| [genAlphaUppercase])
-- | Generates a lowercase character from the basic latin alphabet.
genAlphaLowercase :: forall m. MonadGen m => m Char
genAlphaLowercase = toEnumWithDefaults bottom top <$> chooseInt 97 122
-- | Generates an uppercase character from the basic latin alphabet.
genAlphaUppercase :: forall m. MonadGen m => m Char
genAlphaUppercase = toEnumWithDefaults bottom top <$> chooseInt 65 90