Data encoding: fail on string_enum that should be a constant
This commit is contained in:
parent
c77cbcb30b
commit
f00c7c0667
@ -535,11 +535,14 @@ module Encoding = struct
|
|||||||
let array e = dynamic_size (Variable.array e)
|
let array e = dynamic_size (Variable.array e)
|
||||||
let list e = dynamic_size (Variable.list e)
|
let list e = dynamic_size (Variable.list e)
|
||||||
|
|
||||||
let string_enum cases =
|
let string_enum = function
|
||||||
let arr = Array.of_list (List.map snd cases) in
|
| [] -> invalid_arg "data_encoding.string_enum: cannot have zero cases"
|
||||||
let tbl = Hashtbl.create (Array.length arr) in
|
| [ _case ] -> invalid_arg "data_encoding.string_enum: cannot have a single case, use constant instead"
|
||||||
List.iteri (fun ind (str, a) -> Hashtbl.add tbl a (str, ind)) cases ;
|
| _ :: _ as cases ->
|
||||||
make @@ String_enum (tbl, arr)
|
let arr = Array.of_list (List.map snd cases) in
|
||||||
|
let tbl = Hashtbl.create (Array.length arr) in
|
||||||
|
List.iteri (fun ind (str, a) -> Hashtbl.add tbl a (str, ind)) cases ;
|
||||||
|
make @@ String_enum (tbl, arr)
|
||||||
|
|
||||||
let conv proj inj ?schema encoding =
|
let conv proj inj ?schema encoding =
|
||||||
make @@ Conv { proj ; inj ; encoding ; schema }
|
make @@ Conv { proj ; inj ; encoding ; schema }
|
||||||
|
Loading…
Reference in New Issue
Block a user