Source file multimap_to_yojson.ml
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
36
open Batteries;;
open Multimap;;
open Yojson_utils;;
module Make
(M : Multimap_sig)
(K_yojson : To_yojson_type with type t = M.key)
(V_yojson : To_yojson_type with type t = M.value)
=
struct
let to_yojson m =
`Assoc
[ ( "type"
, `String "multimap"
)
; ( "mappings"
, `List
(M.enum_by_key m
|> Enum.map
(fun (k,vs) ->
`Assoc
[ ( "key", K_yojson.to_yojson k )
; ( "values"
, `List ( M.S.enum vs
|> Enum.map V_yojson.to_yojson
|> List.of_enum
)
)
]
)
|> List.of_enum
)
)
]
;;
end;;