UNPKG

1.31 kBJavaScriptView Raw
1"use strict";
2
3var array = require("./array.js");
4var primitive = require("./primitive.js");
5var utils = require("./utils.js");
6
7/**
8 ### Arbitrary strings
9*/
10
11function fromCode(code) {
12 return String.fromCharCode(code);
13}
14
15function toCode(c) {
16 return c.charCodeAt(0);
17}
18
19/**
20 - `char: arbitrary char` — Single character
21*/
22var char = primitive.nat(0xff).smap(fromCode, toCode);
23
24/**
25 - `asciichar: arbitrary char` — Single ascii character (0x20-0x7e inclusive, no DEL)
26*/
27var asciichar = primitive.integer(0x20, 0x7e).smap(fromCode, toCode);
28
29/**
30 - `string: arbitrary string`
31*/
32var string = array.array(char).smap(utils.charArrayToString, utils.stringToCharArray);
33
34/**
35 - `nestring: arbitrary string` — Generates strings which are not empty.
36*/
37var nestring = array.nearray(char).smap(utils.charArrayToString, utils.stringToCharArray);
38
39/**
40 - `asciistring: arbitrary string`
41*/
42var asciistring = array.array(asciichar).smap(utils.charArrayToString, utils.stringToCharArray);
43
44/**
45 - `asciinestring: arbitrary string`
46*/
47var asciinestring = array.nearray(asciichar).smap(utils.charArrayToString, utils.stringToCharArray);
48
49module.exports = {
50 char: char,
51 asciichar: asciichar,
52 string: string,
53 nestring: nestring,
54 asciistring: asciistring,
55 asciinestring: asciinestring,
56};