Module Sexplib0.SexpSource
module type Pretty_print_to_formatter = sig ... endmodule type Pretty_printing_helpers_private = sig ... endFunctions used by Make_pretty_printing
module type Pretty_printing_helpers = sig ... endmodule type Pretty_printing = sig ... endNot_found_s is used by functions that historically raised Not_found, to allow them to raise an exception that contains an informative error message (as a sexp), while still having an exception that can be distinguished from other exceptions.
Of_sexp_error (exn, sexp) the exception raised when an S-expression could not be successfully converted to an OCaml-value.
Helpers
Helper to build nice s-expressions for error messages. It imitates the behavior of
[[%message ...]] from the ppx_sexp_message rewriter.
[message name key_values] produces a s-expression list starting with atom [name] and
followed by list of size 2 of the form [(key value)]. When the key is the empty
string, [value] is used directly instead as for [[%message]].
For instance the following code:
{[
Sexp.message "error"
[ "x", sexp_of_int 42
; "" , sexp_of_exn Exit
]
]}
produces the s-expression:
{[
(error (x 42) Exit)
]}Defaults
default_indent reference to default indentation level for human-readable conversions.
Initialisation value: 1.
Pretty printing of S-expressions
module Make_pretty_printing
(Helpers : Sexplib0.Sexp.Pretty_printing_helpers) :
Sexplib0.Sexp.Pretty_printing with type output := stringinclude Sexplib0.Sexp.Pretty_printing with type output := string
Printing to formatters
pp_hum ppf sexp outputs S-expression sexp to formatter ppf in human readable form.
pp_hum_indent n ppf sexp outputs S-expression sexp to formatter ppf in human readable form and indentation level n.
pp_mach ppf sexp outputs S-expression sexp to formatter ppf in machine readable (i.e. most compact) form.
Same as pp_mach.
Conversion to strings
to_string_hum ?indent ?max_width sexp converts S-expression sexp to a string in human readable form with indentation level indent and target maximum width max_width. Note long atoms may overflow max_width.
to_string_mach sexp converts S-expression sexp to a string in machine readable (i.e. most compact) form.
Same as to_string_mach.
Conversion to buffers
val to_buffer_hum :
buf:Stdlib.Buffer.t ->
?indent:int ->
?max_width:int ->
Sexplib0.Sexp.t ->
unit @@ portableto_buffer_hum ~buf ?indent ?max_width sexp outputs the S-expression sexp converted to a string in human readable form to buffer buf with indentation level indent and target maximum width max_width. Note long atoms may overflow max_width.
to_buffer_mach ~buf sexp outputs the S-expression sexp converted to a string in machine readable (i.e. most compact) form to buffer buf.
to_buffer ~buf sexp same as to_buffer_mach.
val to_buffer_gen :
buf:'buffer ->
add_char:('buffer -> char -> unit) ->
add_string:('buffer -> string -> unit) ->
Sexplib0.Sexp.t ->
unit @@ portableto_buffer_gen ~buf ~add_char ~add_string sexp outputs the S-expression sexp converted to a string to buffer buf using the output functions add_char and add_string.
Functions used by Make_pretty_printing
See Pretty_printing.to_string_hum, to_string_mach, and to_string, respectively.
val to_string_hum__stack :
?indent:int ->
?max_width:int ->
Sexplib0.Sexp.t @ local ->
string @ local @@ portableWARNING to_string_hum__stack globalizes t if it is allocated on the stack.