Skip to content

Commit

Permalink
(ocaml) Add support for deserialization options
Browse files Browse the repository at this point in the history
parse_<typename> functions now accept an addition ?opts parameter with
de-serialization options, similar to gen_<typename>.
  • Loading branch information
alavrik committed Apr 29, 2012
1 parent 5da425c commit 2a9d741
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 2 deletions.
5 changes: 3 additions & 2 deletions piqic/piqic_ocaml_ext.ml
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -60,8 +60,9 @@ let gen_convert mlname input_format output_format data =
let gen_parse ocaml_mod def = let gen_parse ocaml_mod def =
let mlname = piqdef_mlname def in let mlname = piqdef_mlname def in
iod " " [ iod " " [
ios "let parse_" ^^ ios mlname; ios "x (format :Piqirun_ext.input_format) ="; ios "let parse_" ^^ ios mlname;
ios "let x_pb ="; gen_convert mlname "format" "`pb" "x"; ios "?opts"; ios "x (format :Piqirun_ext.input_format) =";
ios "let x_pb ="; gen_convert mlname "format" "`pb" "x"; ios "?opts";
ios "in"; ios "in";
ios "let buf = Piqirun.init_from_string x_pb"; ios "let buf = Piqirun.init_from_string x_pb";
ios "in"; ios "in";
Expand Down
18 changes: 18 additions & 0 deletions piqilib/piqirun_ext.mli
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -34,6 +34,24 @@ val init_piqi : string list -> unit


val find_piqtype : string -> piqtype val find_piqtype : string -> piqtype



(* Construct serialization options to be passed as an optional argument to
* gen_<typename> and parse_<typename> functions. Available options:
*
* pretty_print
*
* Pretty-print generated JSON and XML output (default = true)
*
* json_omit_null_fields
*
* Omit missing optional fields from JSON output instead of representing
* them as {"field_name": null} JSON fields (default = true)
*
* use_strict_parsing
*
* Treat unknown and duplicate fields as errors when parsing JSON,
* XML and Piq formats (default = false)
*)
val make_options: val make_options:
?pretty_print:bool -> ?pretty_print:bool ->
?json_omit_null_fields:bool -> ?json_omit_null_fields:bool ->
Expand Down

0 comments on commit 2a9d741

Please sign in to comment.