1 |
|
2 | "use strict";
|
3 |
|
4 | var arbitraryAssert = require("./arbitraryAssert.js");
|
5 | var array = require("./array.js");
|
6 | var pair = require("./pair.js");
|
7 | var string = require("./string.js");
|
8 | var utils = require("./utils.js");
|
9 |
|
10 | function 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 |
|
18 | function 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 |
|
28 | module.exports = {
|
29 | dict: dict,
|
30 | };
|