12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394open!Coreopen!ImportincludeCompare_core_intfmoduleMake(Patdiff_core_arg:Patdiff_core.S)=struct(* Returns a Hunk.t list, ready to be printed *)letcompare_lines(config:Configuration.t)~prev~next=(* Create the diff *)letcontext=config.contextinletkeep_ws=config.keep_wsinletsplit_long_lines=config.split_long_linesinletline_big_enough=config.line_big_enoughinlethunks=lettransform=ifkeep_wsthenFn.idelsePatdiff_core.remove_wsinPatience_diff.String.get_hunks~transform~context~big_enough:line_big_enough~prev~next()inlethunks=matchconfig.float_tolerancewith|None->hunks|Sometolerance->Float_tolerance.applyhunkstolerance~contextin(* Refine if desired *)ifconfig.unrefinedthen(* Turn `Replace ranges into `Prev and `Next ranges.
`Replace's would otherwise be later interpreted as refined output *)Patience_diff.Hunks.unifiedhunkselse(letrules=config.rulesinletoutput=config.outputinletproduce_unified_lines=config.produce_unified_linesinletinterleave=config.interleaveinletword_big_enough=config.word_big_enoughinPatdiff_core_arg.refine~rules~output~keep_ws~produce_unified_lines~split_long_lines~interleavehunks~word_big_enough);;letdiff_strings?print_global_header(config:Configuration.t)~(prev:Diff_input.t)~(next:Diff_input.t)=letlines{Diff_input.name=_;text}=String.split_linestext|>Array.of_listinlethunks=Comparison_result.createconfig~prev~next~compare_assuming_text:(funconfig~prev~next->compare_linesconfig~prev:(linesprev)~next:(linesnext))inifComparison_result.has_no_diffhunksthen`Sameelse`Different(matchhunkswith|Binary_same->assertfalse|Binary_different{prev_is_binary;next_is_binary}->File_helpers.binary_different_message~config~prev_file:(Fakeprev.name)~prev_is_binary~next_file:(Fakenext.name)~next_is_binary|Hunkshunks->Patdiff_core_arg.output_to_stringhunks?print_global_header~file_names:(Fakeprev.name,Fakenext.name)~output:config.output~rules:config.rules~location_style:config.location_style);;modulePrivate=structletcompare_lines=compare_linesendendmoduleWithout_unix=Make(Patdiff_core.Without_unix)