A With_text.t
is a value paired with the full textual representation of its sexp.
This is useful for dealing with the case where you want to keep track of a value along
with the format of the s-expression it was generated from, which allows you to
maintain formatting details, comments, etc.
The s-expression representation of a With_text.t
is the raw text, stored as an atom.
The bin_io representation contains both the bin_io of the underlying value and the
bin_io'd version of the raw text.
This is similar to but simpler than the With_layout
module included above (via
Sexp_intf.S
), which gives you access to a fully parsed version of the s-expression,
with attached comments and layout information, to allow you to build layout-preserving
s-expression transformations.
The invariants of a x With_text.t
are broken if the x
value is mutated.
include sig ... end
val t_of_sexp : (Sexplib.Sexp.t ‑> 'a) ‑> Sexplib.Sexp.t ‑> 'a t
val sexp_of_t : ('a ‑> Sexplib.Sexp.t) ‑> 'a t ‑> Sexplib.Sexp.t
val bin_t : 'a Bin_prot.Type_class.t ‑> 'a t Bin_prot.Type_class.t
val bin_read_t : 'a Bin_prot.Read.reader ‑> 'a t Bin_prot.Read.reader
val __bin_read_t__ : 'a Bin_prot.Read.reader ‑> (Core_kernel__.Import.int ‑> 'a t) Bin_prot.Read.reader
val bin_reader_t : 'a Bin_prot.Type_class.reader ‑> 'a t Bin_prot.Type_class.reader
val bin_size_t : 'a Bin_prot.Size.sizer ‑> 'a t Bin_prot.Size.sizer
val bin_write_t : 'a Bin_prot.Write.writer ‑> 'a t Bin_prot.Write.writer
val bin_writer_t : 'a Bin_prot.Type_class.writer ‑> 'a t Bin_prot.Type_class.writer
val bin_shape_t : Bin_prot.Shape.t ‑> Bin_prot.Shape.t
val of_value : ('a ‑> Base.Sexp.t) ‑> 'a ‑> 'a t
Generates a t
from the value by creating the text automatically using the provided
s-expression converter.
val of_text : (Base.Sexp.t ‑> 'a) ‑> ?filename:Core_kernel__.Import.string ‑> Core_kernel__.Import.string ‑> 'a t Core_kernel.Or_error.t
Creates a t
from the text, by first converting the text to an s-expression, and
then parsing the s-expression with the provided converter.
val value : 'a t ‑> 'a
val text : 'a t ‑> Core_kernel__.Import.string