UNPKG

720 BJavaScriptView Raw
1/* @flow weak */
2"use strict";
3
4var arbitraryAssert = require("./arbitraryAssert.js");
5var array = require("./array.js");
6var pair = require("./pair.js");
7var string = require("./string.js");
8var utils = require("./utils.js");
9
10function makeMapShow(elShow) {
11 return function (m) {
12 return "{" + Object.keys(m).map(function (k) {
13 return k + ": " + elShow(m[k]);
14 }).join(", ") + "}";
15 };
16}
17
18function dict(arb) {
19 arb = utils.force(arb);
20 arbitraryAssert(arb);
21
22 var pairArbitrary = pair.pair(string.string, arb);
23 var arrayArbitrary = array.array(pairArbitrary);
24
25 return arrayArbitrary.smap(utils.pairArrayToDict, utils.dictToPairArray, makeMapShow(arb.show));
26}
27
28module.exports = {
29 dict: dict,
30};