sig
module Matching_block :
sig type t = { mine_start : int; other_start : int; length : int; } end
val get_matching_blocks :
transform:('a -> 'b) ->
compare:('b -> 'b -> int) ->
mine:'a array -> other:'a array -> Patience_diff.Matching_block.t list
val ratio : 'a array -> 'a array -> float
module Range :
sig
type 'a t =
Same of ('a * 'a) array
| Old of 'a array
| New of 'a array
| Replace of 'a array * 'a array
| Unified of 'a array
val all_same : 'a Patience_diff.Range.t list -> bool
val old_only :
'a Patience_diff.Range.t list -> 'a Patience_diff.Range.t list
val new_only :
'a Patience_diff.Range.t list -> 'a Patience_diff.Range.t list
val t_of_sexp :
(Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a Patience_diff.Range.t
val sexp_of_t :
('a -> Sexplib.Sexp.t) -> 'a Patience_diff.Range.t -> Sexplib.Sexp.t
end
module Hunk :
sig
type 'a t = {
mine_start : int;
mine_size : int;
other_start : int;
other_size : int;
ranges : 'a Patience_diff.Range.t list;
}
val all_same : 'a Patience_diff.Hunk.t -> bool
end
val get_hunks :
transform:('a -> 'b) ->
compare:('b -> 'b -> int) ->
context:int ->
mine:'a array -> other:'a array -> 'a Patience_diff.Hunk.t list
val print_ranges : string Patience_diff.Hunk.t -> unit
val all_same : 'a Patience_diff.Hunk.t list -> bool
val unified : 'a Patience_diff.Hunk.t list -> 'a Patience_diff.Hunk.t list
val old_only : 'a Patience_diff.Hunk.t list -> 'a Patience_diff.Hunk.t list
val new_only : 'a Patience_diff.Hunk.t list -> 'a Patience_diff.Hunk.t list
val ranges : 'a Patience_diff.Hunk.t list -> 'a Patience_diff.Range.t list
type 'a segment = Same of 'a array | Different of 'a array array
type 'a merged_array = 'a Patience_diff.segment list
val merge : 'a array array -> 'a Patience_diff.merged_array
end