@@ -72,6 +72,7 @@ let trim_trailing_blank_lines : string -> string = fun s ->
7272
7373let trim_leading_whitespace : first_line_offset:int -> string -> string =
7474 fun ~first_line_offset s ->
75+ (* * Returns [None] for an empty, [Some ident] for an indented line. *)
7576 let count_leading_whitespace line =
7677 let rec count_leading_whitespace ' index len =
7778 if index = len then None
@@ -83,21 +84,17 @@ let trim_leading_whitespace : first_line_offset:int -> string -> string =
8384 let len = String. length line in
8485 (* '\r' may remain because we only split on '\n' below. This is important
8586 for the first line, which would be considered not empty without this check. *)
86- let len, ending =
87- if len > 0 && line.[len - 1 ] = '\r' then (len - 1 , " \r\n " ) else (len, " \n " )
88- in
89- match count_leading_whitespace' 0 len with
90- | Some index -> `Leading_whitespace index
91- | None -> `Blank_line ending
87+ let len = if len > 0 && line.[len - 1 ] = '\r' then len - 1 else len in
88+ count_leading_whitespace' 0 len
9289 in
9390
9491 let lines = Astring.String. cuts ~sep: " \n " s in
9592
9693 let least_amount_of_whitespace =
9794 List. fold_left (fun least_so_far line ->
9895 match (count_leading_whitespace line, least_so_far) with
99- | (`Leading_whitespace n , None) -> Some n
100- | (`Leading_whitespace n , Some least ) when n < least -> Some n
96+ | (Some _ as n' , None) -> n'
97+ | (Some n as n' , Some least ) when n < least -> n'
10198 | _ -> least_so_far)
10299 in
103100
@@ -106,9 +103,9 @@ let trim_leading_whitespace : first_line_offset:int -> string -> string =
106103 | [] -> 0 , None
107104 | first_line :: tl ->
108105 begin match count_leading_whitespace first_line with
109- | `Leading_whitespace n ->
106+ | Some n ->
110107 n, least_amount_of_whitespace (Some (first_line_offset + n)) tl
111- | `Blank_line _ ->
108+ | None ->
112109 0 , least_amount_of_whitespace None tl
113110 end
114111 in
0 commit comments