Skip to content

Commit e69a22c

Browse files
authored
Merge pull request #77 from purescript/gen
Add some generator functions
2 parents dbd0ac2 + f4759c6 commit e69a22c

File tree

3 files changed

+52
-0
lines changed

3 files changed

+52
-0
lines changed

bower.json

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
],
1919
"dependencies": {
2020
"purescript-either": "^3.0.0",
21+
"purescript-gen": "^1.1.0",
2122
"purescript-maybe": "^3.0.0",
2223
"purescript-partial": "^1.2.0"
2324
},

src/Data/Char/Gen.purs

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
module Data.Char.Gen where
2+
3+
import Prelude
4+
5+
import Control.Monad.Gen (class MonadGen, chooseInt)
6+
import Data.Char as C
7+
8+
-- | Generates a character of the Unicode basic multilingual plain.
9+
genUnicodeChar :: forall m. MonadGen m => m Char
10+
genUnicodeChar = C.fromCharCode <$> chooseInt 0 65536
11+
12+
-- | Generates a character in the ASCII character set, excluding control codes.
13+
genAsciiChar :: forall m. MonadGen m => m Char
14+
genAsciiChar = C.fromCharCode <$> chooseInt 32 127
15+
16+
-- | Generates a character in the ASCII character set.
17+
genAsciiChar' :: forall m. MonadGen m => m Char
18+
genAsciiChar' = C.fromCharCode <$> chooseInt 0 127
19+
20+
-- | Generates a character that is a numeric digit.
21+
genDigitChar :: forall m. MonadGen m => m Char
22+
genDigitChar = C.fromCharCode <$> chooseInt 48 57

src/Data/String/Gen.purs

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
module Data.String.Gen where
2+
3+
import Prelude
4+
5+
import Control.Monad.Gen (class MonadGen, unfoldable)
6+
import Control.Monad.Rec.Class (class MonadRec)
7+
import Data.Char.Gen as CG
8+
import Data.String as S
9+
10+
-- | Generates a string using the specified character generator.
11+
genString :: forall m. MonadRec m => MonadGen m => m Char -> m String
12+
genString = map S.fromCharArray <<< unfoldable
13+
14+
-- | Generates a string using characters from the Unicode basic multilingual
15+
-- | plain.
16+
genUnicodeString :: forall m. MonadRec m => MonadGen m => m String
17+
genUnicodeString = genString CG.genUnicodeChar
18+
19+
-- | Generates a string using the ASCII character set, excluding control codes.
20+
genAsciiString :: forall m. MonadRec m => MonadGen m => m String
21+
genAsciiString = genString CG.genAsciiChar
22+
23+
-- | Generates a string using the ASCII character set.
24+
genAsciiString' :: forall m. MonadRec m => MonadGen m => m String
25+
genAsciiString' = genString CG.genAsciiChar'
26+
27+
-- | Generates a string made up of numeric digits.
28+
genDigitString :: forall m. MonadRec m => MonadGen m => m String
29+
genDigitString = genString CG.genDigitChar

0 commit comments

Comments
 (0)