type 'a reader = Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> 'a
Type of a read_
function as produced by atdgen -json
.
In versions of yojson greater than 1.0.1, type Yojson.Safe.lexer_state
is equivalent to Yojson.lexer_state
, Yojson.Basic.lexer_state
and Yojson.Raw.lexer_state
.
type 'a writer = Bi_outbuf.t -> 'a -> unit
Type of a write_
function as produced by atdgen -json
.
val from_lexbuf : ?stream:bool -> 'a reader -> Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> 'a
Read a JSON value from a lexbuf.
- parameter stream
if
true
, the JSON parser will not try to consume whitespace until the end of file. Default isfalse
, which raises aYojson.Json_error
exception if the valid JSON value is followed by anything other than standard JSON whitespace.
val from_string : ?buf:Bi_outbuf.t -> ?fname:string -> ?lnum:int -> 'a reader -> string -> 'a
Convert a JSON value from a string.
- parameter buf
buffer used to accumulate string data during the lexing phase.
- parameter fname
input file name to be used in error messages. It does not have to be the name of a real file, it can be something like
"<stdin>"
.
- parameter lnum
line number to assign to the first line of input. For example
lnum=10
means that an error on the first line of input will be reported as an error on line 10. Default: 1.
val from_channel : ?buf:Bi_outbuf.t -> ?fname:string -> ?lnum:int -> 'a reader -> Stdlib.in_channel -> 'a
Read a JSON value from a channel.
- parameter buf
buffer used to accumulate string data during the lexing phase.
- parameter fname
input file name to be used in error messages. It does not have to be the name of a real file, it can be something like
"<stdin>"
.
- parameter lnum
line number to assign to the first line of input. For example
lnum=10
means that an error on the first line of input will be reported as an error on line 10. Default: 1.
val from_file : ?buf:Bi_outbuf.t -> ?fname:string -> ?lnum:int -> 'a reader -> string -> 'a
Read a JSON value from a channel.
- parameter buf
buffer used to accumulate string data during the lexing phase.
- parameter fname
input file name to be used in error messages. It is intended to represent the source file if it is different from the input file.
- parameter lnum
line number to assign to the first line of input. For example
lnum=10
means that an error on the first line of input will be reported as an error on line 10. Default: 1.
val stream_from_lexbuf : ?fin:(unit -> unit) -> 'a reader -> Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> 'a Stdlib.Stream.t
Read a stream of JSON values from a lexbuf.
- parameter fin
finalization function executed once when the end of the stream is reached either because there is no more input or because of an exception. This is typically used to close the input channel, e.g.
fun () -> close_in_noerr ic
.
val stream_from_string : ?buf:Bi_outbuf.t -> ?fin:(unit -> unit) -> ?fname:string -> ?lnum:int -> 'a reader -> string -> 'a Stdlib.Stream.t
Read a stream of JSON values from a channel. Values do not have to be separated by newline characters.
- parameter buf
buffer used to accumulate string data during the lexing phase.
- parameter fin
finalization function executed once when the end of the stream is reached either because there is no more input or because of an exception. This is typically used to free the underlying resources, if any.
- parameter fname
input file name to be used in error messages. It does not have to be the name of a real file, it can be something like
"<stdin>"
.
- parameter lnum
line number to assign to the first line of input. For example
lnum=10
means that an error on the first line of input will be reported as an error on line 10. Default: 1.
val stream_from_channel : ?buf:Bi_outbuf.t -> ?fin:(unit -> unit) -> ?fname:string -> ?lnum:int -> 'a reader -> Stdlib.in_channel -> 'a Stdlib.Stream.t
Read a stream of JSON values from a channel. Values do not have to be separated by newline characters.
- parameter buf
buffer used to accumulate string data during the lexing phase.
- parameter fin
finalization function executed once when the end of the stream is reached either because there is no more input or because of an exception. This is typically used to close the input channel, e.g.
fun () -> close_in_noerr ic
.
- parameter fname
input file name to be used in error messages. It does not have to be the name of a real file, it can be something like
"<stdin>"
.
- parameter lnum
line number to assign to the first line of input. For example
lnum=10
means that an error on the first line of input will be reported as an error on line 10. Default: 1.
val stream_from_file : ?buf:Bi_outbuf.t -> ?fin:(unit -> unit) -> ?fname:string -> ?lnum:int -> 'a reader -> string -> 'a Stdlib.Stream.t
Read a stream of JSON values from a file. Values do not have to be separated by newline characters.
- parameter buf
buffer used to accumulate string data during the lexing phase.
- parameter fin
finalization function executed once when the end of the stream is reached either because there is no more input or because of an exception. This can be used to remove the input file if it was temporary, e.g.
fun () -> Sys.remove fname
.
- parameter fname
input file name to be used in error messages. It is intended to represent the source file if it is different from the input file.
- parameter lnum
line number to assign to the first line of input. For example
lnum=10
means that an error on the first line of input will be reported as an error on line 10. Default: 1.
val list_from_string : ?buf:Bi_outbuf.t -> ?fin:(unit -> unit) -> ?fname:string -> ?lnum:int -> 'a reader -> string -> 'a list
Read a list of JSON values from a channel. Values do not have to be separated by newline characters.
- parameter buf
buffer used to accumulate string data during the lexing phase.
- parameter fin
finalization function executed once when the end of the stream is reached either because there is no more input or because of an exception. This is typically used to free the underlying resources, if any.
- parameter fname
input file name to be used in error messages. It does not have to be the name of a real file, it can be something like
"<stdin>"
.
- parameter lnum
line number to assign to the first line of input. For example
lnum=10
means that an error on the first line of input will be reported as an error on line 10. Default: 1.
val list_from_channel : ?buf:Bi_outbuf.t -> ?fin:(unit -> unit) -> ?fname:string -> ?lnum:int -> 'a reader -> Stdlib.in_channel -> 'a list
Read a list of JSON values from a channel. Values do not have to be separated by newline characters.
- parameter buf
buffer used to accumulate string data during the lexing phase.
- parameter fin
finalization function executed once when the end of the stream is reached either because there is no more input or because of an exception. This is typically used to close the input channel, e.g.
fun () -> close_in_noerr ic
.
- parameter fname
input file name to be used in error messages. It does not have to be the name of a real file, it can be something like
"<stdin>"
.
- parameter lnum
line number to assign to the first line of input. For example
lnum=10
means that an error on the first line of input will be reported as an error on line 10. Default: 1.
val list_from_file : ?buf:Bi_outbuf.t -> ?fname:string -> ?lnum:int -> 'a reader -> string -> 'a list
Read a list of JSON values from a file. Values do not have to be separated by newline characters.
- parameter buf
buffer used to accumulate string data during the lexing phase.
- parameter fname
input file name to be used in error messages. It is intended to represent the source file if it is different from the input file.
- parameter lnum
line number to assign to the first line of input. For example
lnum=10
means that an error on the first line of input will be reported as an error on line 10. Default: 1.
val to_string : ?len:int -> 'a writer -> 'a -> string
Write a JSON value to a string.
- parameter len
output buffer length.
val to_channel : ?len:int -> 'a writer -> Stdlib.out_channel -> 'a -> unit
Write a JSON value to a channel.
- parameter len
output buffer length.
val to_file : ?len:int -> 'a writer -> string -> 'a -> unit
Write a JSON value to a file.
- parameter len
output buffer length.
val stream_to_string : ?len:int -> ?lf:string -> 'a writer -> 'a Stdlib.Stream.t -> string
Write a stream of values to a string.
- parameter len
output buffer length.
- parameter lf
additional element terminator. Default:
"\n"
.
val stream_to_channel : ?len:int -> ?lf:string -> 'a writer -> Stdlib.out_channel -> 'a Stdlib.Stream.t -> unit
Write a stream of values to a channel.
- parameter len
output buffer length.
- parameter lf
additional element terminator. Default:
"\n"
.
val stream_to_file : ?len:int -> ?lf:string -> 'a writer -> string -> 'a Stdlib.Stream.t -> unit
Write a stream of values to a file.
- parameter len
output buffer length.
- parameter lf
additional element terminator. Default:
"\n"
.
val list_to_string : ?len:int -> ?lf:string -> 'a writer -> 'a list -> string
Write a list of values to a string.
- parameter len
output buffer length.
- parameter lf
additional element terminator. Default:
"\n"
.
val list_to_channel : ?len:int -> ?lf:string -> 'a writer -> Stdlib.out_channel -> 'a list -> unit
Write a list of values to a channel.
- parameter len
output buffer length.
- parameter lf
additional element terminator. Default:
"\n"
.
val list_to_file : ?len:int -> ?lf:string -> 'a writer -> string -> 'a list -> unit
Write a list of values to a file.
- parameter len
output buffer length.
- parameter lf
additional element terminator. Default:
"\n"
.
preset_unknown_field_handler src_loc field_name
raises a Failure
exception with a message containing the location of the type definition in the source ATD file (src_loc
) and the name of the field (field_name
).
val unknown_field_handler : (string -> string -> unit) Stdlib.ref
Function called when an unknown JSON field is encountered if the code was generated by atdgen -json-strict-fields. Its preset behavior is to call preset_unknown_field_handler
which raises a Failure
exception.
Usage: !Atdgen_runtime.Util.Json.unknown_field_handler src_loc field_name
where src_loc
is the location of the type definition in the source ATD file and field_name
is the unknown JSON field name.