From e1b6277c722d0c1d0fe296496219e3fedad552dc Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Sat, 1 Mar 2014 14:00:29 +0100 Subject: [PATCH] changed encoding of sums for Json and Bencode --- conv.ml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/conv.ml b/conv.ml index 47dfdd74..4454b2d9 100644 --- a/conv.ml +++ b/conv.ml @@ -430,12 +430,12 @@ module Json = struct | `Bool b -> self#bool_ sink b | `Null -> self#unit_ sink | `String s -> self#string_ sink s - | `List l -> self#list_ sink l - | `Assoc ([name, `List l] as fields) -> + | `List ((`String name :: l) as l') -> begin match Sink.expected sink with | Sink.ExpectSum -> self#sum sink name l - | _ -> self#record sink fields + | _ -> self#list_ sink l' end + | `List l -> self#list_ sink l | `Assoc l -> self#record sink l end @@ -450,7 +450,7 @@ module Json = struct method tuple l = `List l method sum name l = match l with | [] -> `String name - | _::_ -> `Assoc [name, `List l] + | _::_ -> `List (`String name :: l) end end @@ -511,7 +511,7 @@ module Bencode = struct method visit: 'a. 'a Sink.t -> t -> 'a = fun sink x -> match x, Sink.expected sink with | String s, Sink.ExpectSum -> self#sum sink s [] - | Assoc [name, List l] , Sink.ExpectSum -> self#sum sink name l + | List (String name :: l), Sink.ExpectSum -> self#sum sink name l | Assoc l, _ -> self#record sink l | String s, _ -> self#string_ sink s | Int 0, Sink.ExpectUnit -> self#unit_ sink @@ -530,7 +530,7 @@ module Bencode = struct method record l = Assoc l method sum name l = match l with | [] -> String name - | _::_ -> Assoc [name, List l] + | _::_ -> List (String name :: l) end end