module Line : sig ... endtype 'a single_line = {leading_blanks : Base.string; | regexp: " |
trailing_spaces : Base.string; | regexp: " |
orig : Base.string; | regexp: " |
data : 'a; |
}Single line represent %expect nodes with data on the first line but not on the subsequent ones.
For instance:
[%expect " blah "];
[%expect {| blah
|}]val sexp_of_single_line : ('a -> Ppx_sexp_conv_lib.Sexp.t) -> 'a single_line -> Ppx_sexp_conv_lib.Sexp.tval compare_single_line : ('a -> 'a -> Base.int) -> 'a single_line -> 'a single_line -> Base.inttype 'a multi_lines = {leading_spaces : Base.string; | regexp: "\( |
trailing_spaces : Base.string; | regexp: " |
indentation : Base.string; | regexp: " |
lines : 'a Line.t Base.list; | regexp: not_blank (.* not_blank)? |
}Any %expect node with one or more newlines and at least one non-blank line.
This also include the case with exactly one non-blank line such as:
[%expect {|
blah
|}]This is to preserve this formatting in case the correction is multi-line.
leading_spaces contains everything until the first non-blank line, while trailing_spaces is either:
- trailing blanks on the last line if of the form:
[%expect {|
abc
def |}]- all trailing spaces from the newline character (inclusive) on the last non-blank line to the end if of the form:
[%expect {|
abc
def
|}]val sexp_of_multi_lines : ('a -> Ppx_sexp_conv_lib.Sexp.t) -> 'a multi_lines -> Ppx_sexp_conv_lib.Sexp.tval compare_multi_lines : ('a -> 'a -> Base.int) -> 'a multi_lines -> 'a multi_lines -> Base.inttype 'a t = | Empty of Base.string | regexp: " |
| Single_line of 'a single_line | |
| Multi_lines of 'a multi_lines |
val sexp_of_t : ('a -> Ppx_sexp_conv_lib.Sexp.t) -> 'a t -> Ppx_sexp_conv_lib.Sexp.tval empty : 'a tval map : 'a t -> f:(Base.string -> 'a -> 'b) -> 'b tval to_string : _ t -> Base.stringFor single line expectation, leading blanks and trailing spaces are dropped.
Remove blank lines at the beginning and end of the list.
val reconcile : 'a t -> lines:'a Line.t Base.list -> default_indentation:Base.int -> pad_single_line:Base.bool -> 'a tGiven a contents t and a list of lines, try to produce a new contents containing lines but with the same formating as t.
default_indentation is the indentation to use in case we ignore t's indentation (for instance if t is Single_line or Empty).
val extract_indentation : 'a Line.t Base.list -> Base.string * 'a Line.t Base.listCompuute the longest indentation of a list of lines and trim it from every line. It returns the found indentation and the list of trimmed lines.
val stripped_original_lines : _ t -> Base.string Base.listAll the .orig fields of Line.t or single_line values, using "" for blank lines.