1- CLASS zcl_differ_diff3 DEFINITION
1+ CLASS zcl_diff3 DEFINITION
22 PUBLIC
33 FINAL
44 CREATE PUBLIC .
55
66************************************************************************
7- * ABAP Differ - Diff3
7+ * ABAP Diff3
88*
9- * https://github.com/Marc-Bernard-Tools/ABAP-Differ
9+ * https://github.com/Marc-Bernard-Tools/ABAP-Diff3
1010*
1111* This is a port of JavaScript (https://github.com/bhousel/node-diff3, MIT license)
1212* https://github.com/bhousel/node-diff3/blob/main/index.mjs as of 2021-09-24
1313*
14- * Copyright 2021 Marc Bernard <https://marcbernardtools.com/>
14+ * Copyright 2022 Marc Bernard <https://marcbernardtools.com/>
1515* SPDX-License-Identifier: MIT
1616************************************************************************
17+
1718 PUBLIC SECTION .
1819
19- INTERFACES zif_differ_diff3 .
20+ INTERFACES zif_diff3 .
2021
2122 CLASS-METHODS create
2223 RETURNING
23- VALUE (ri_result ) TYPE REF TO zif_differ_diff3 .
24+ VALUE (ri_result ) TYPE REF TO zif_diff3 .
2425
2526 CLASS-METHODS convert_to_abap_indices
2627 CHANGING
27- !ct_diff_indices TYPE zif_differ_diff3 =>ty_diff_indices_result_t OPTIONAL .
28+ !ct_diff_indices TYPE zif_diff3 =>ty_diff_indices_result_t OPTIONAL .
2829
2930 PROTECTED SECTION .
3031
@@ -34,52 +35,53 @@ CLASS zcl_differ_diff3 DEFINITION
3435 TYPES :
3536 BEGIN OF ty_hunk,
3637 ab TYPE ty_ab,
37- o_start TYPE zif_differ_diff3 =>ty_number,
38- o_length TYPE zif_differ_diff3 =>ty_number,
39- ab_start TYPE zif_differ_diff3 =>ty_number,
40- ab_length TYPE zif_differ_diff3 =>ty_number,
38+ o_start TYPE zif_diff3 =>ty_number,
39+ o_length TYPE zif_diff3 =>ty_number,
40+ ab_start TYPE zif_diff3 =>ty_number,
41+ ab_length TYPE zif_diff3 =>ty_number,
4142 END OF ty_hunk.
4243 TYPES :
4344 ty_hunks TYPE STANDARD TABLE OF ty_hunk WITH DEFAULT KEY .
4445
4546 METHODS process_common
4647 CHANGING
4748 !ct_common TYPE string_table
48- !ct_result TYPE zif_differ_diff3 =>ty_comm_result_t.
49+ !ct_result TYPE zif_diff3 =>ty_comm_result_t.
4950
5051 METHODS chunk_description
5152 IMPORTING
5253 !it_buffer TYPE string_table
53- !iv_offset TYPE zif_differ_diff3 =>ty_number
54- !iv_length TYPE zif_differ_diff3 =>ty_number
54+ !iv_offset TYPE zif_diff3 =>ty_number
55+ !iv_length TYPE zif_diff3 =>ty_number
5556 RETURNING
56- VALUE (rs_result ) TYPE zif_differ_diff3 =>ty_chunk.
57+ VALUE (rs_result ) TYPE zif_diff3 =>ty_chunk.
5758
5859 METHODS add_hunk
5960 IMPORTING
60- !it_buffer TYPE zif_differ_diff3 =>ty_diff_indices_result_t
61+ !it_buffer TYPE zif_diff3 =>ty_diff_indices_result_t
6162 !iv_ab TYPE ty_ab
6263 CHANGING
63- ct_hunks TYPE ty_hunks.
64+ ! ct_hunks TYPE ty_hunks.
6465
6566 METHODS advance_to
6667 IMPORTING
67- !iv_end_offset TYPE zif_differ_diff3 =>ty_number
68- !it_o TYPE string_table
68+ !iv_end_offset TYPE zif_diff3 =>ty_number
69+ !it_o TYPE string_table
6970 CHANGING
70- cv_curr_offset TYPE zif_differ_diff3 =>ty_number
71- ct_results TYPE zif_differ_diff3 =>ty_region_t.
71+ ! cv_curr_offset TYPE zif_diff3 =>ty_number
72+ ! ct_results TYPE zif_diff3 =>ty_region_t.
7273
7374 METHODS flush_ok
7475 CHANGING
7576 !ct_buffer TYPE string_table
76- !ct_result TYPE zif_differ_diff3 =>ty_merge_region_t.
77+ !ct_result TYPE zif_diff3 =>ty_merge_region_t.
7778
7879 METHODS get_labels
7980 IMPORTING
80- !is_labels TYPE zif_differ_diff3 =>ty_labels
81+ !is_labels TYPE zif_diff3 =>ty_labels
8182 RETURNING
82- VALUE (rs_labels ) TYPE zif_differ_diff3=>ty_labels.
83+ VALUE (rs_labels ) TYPE zif_diff3=>ty_labels.
84+
8385 PRIVATE SECTION .
8486
8587 METHODS _reverse
@@ -100,7 +102,7 @@ ENDCLASS.
100102
101103
102104
103- CLASS zcl_differ_diff3 IMPLEMENTATION .
105+ CLASS zcl_diff3 IMPLEMENTATION .
104106
105107
106108 METHOD add_hunk .
@@ -166,7 +168,7 @@ CLASS zcl_differ_diff3 IMPLEMENTATION.
166168
167169 METHOD create .
168170
169- ri_result = NEW zcl_differ_diff3 ( ).
171+ ri_result = NEW zcl_diff3 ( ).
170172
171173 ENDMETHOD .
172174
@@ -208,15 +210,15 @@ CLASS zcl_differ_diff3 IMPLEMENTATION.
208210 METHOD process_common .
209211
210212 IF ct_common IS NOT INITIAL .
211- DATA (ls_res ) = VALUE zif_differ_diff3 =>ty_comm_result( common = _reverse( ct_common ) ).
213+ DATA (ls_res ) = VALUE zif_diff3 =>ty_comm_result( common = _reverse( ct_common ) ).
212214 INSERT ls_res INTO ct_result INDEX 1 .
213215 CLEAR ct_common.
214216 ENDIF .
215217
216218 ENDMETHOD .
217219
218220
219- METHOD zif_differ_diff3 ~diff3_merge .
221+ METHOD zif_diff3 ~diff3_merge .
220222 " Applies the output of diff3MergeRegions to actually
221223 " construct the merged buffer; the returned result alternates
222224 " between 'ok' and 'conflict' blocks.
@@ -225,7 +227,7 @@ CLASS zcl_differ_diff3 IMPLEMENTATION.
225227 DATA ls_result LIKE LINE OF rt_result.
226228 DATA lt_ok_buffer TYPE string_table.
227229
228- DATA (lt_regions ) = zif_differ_diff3 ~diff3_merge_regions(
230+ DATA (lt_regions ) = zif_diff3 ~diff3_merge_regions(
229231 it_a = it_a
230232 it_o = it_o
231233 it_b = it_b ).
@@ -265,7 +267,7 @@ CLASS zcl_differ_diff3 IMPLEMENTATION.
265267 ENDMETHOD .
266268
267269
268- METHOD zif_differ_diff3 ~diff3_merge_regions .
270+ METHOD zif_diff3 ~diff3_merge_regions .
269271 " Given three buffers, A, O, and B, where both A and B are
270272 " independently derived from O, returns a fairly complicated
271273 " internal representation of merge decisions it's taken. The
@@ -280,10 +282,10 @@ CLASS zcl_differ_diff3 IMPLEMENTATION.
280282
281283 TYPES :
282284 BEGIN OF ty_bound,
283- n0 TYPE zif_differ_diff3 =>ty_number,
284- n1 TYPE zif_differ_diff3 =>ty_number,
285- n2 TYPE zif_differ_diff3 =>ty_number,
286- n3 TYPE zif_differ_diff3 =>ty_number,
285+ n0 TYPE zif_diff3 =>ty_number,
286+ n1 TYPE zif_diff3 =>ty_number,
287+ n2 TYPE zif_diff3 =>ty_number,
288+ n3 TYPE zif_diff3 =>ty_number,
287289 END OF ty_bound.
288290
289291 DATA :
@@ -299,7 +301,7 @@ CLASS zcl_differ_diff3 IMPLEMENTATION.
299301
300302 add_hunk(
301303 EXPORTING
302- it_buffer = zif_differ_diff3 ~diff_indices(
304+ it_buffer = zif_diff3 ~diff_indices(
303305 it_buffer1 = it_o
304306 it_buffer2 = it_a )
305307 iv_ab = 'a'
@@ -308,7 +310,7 @@ CLASS zcl_differ_diff3 IMPLEMENTATION.
308310
309311 add_hunk(
310312 EXPORTING
311- it_buffer = zif_differ_diff3 ~diff_indices(
313+ it_buffer = zif_diff3 ~diff_indices(
312314 it_buffer1 = it_o
313315 it_buffer2 = it_b )
314316 iv_ab = 'b'
@@ -472,16 +474,16 @@ CLASS zcl_differ_diff3 IMPLEMENTATION.
472474 ENDMETHOD .
473475
474476
475- METHOD zif_differ_diff3 ~diff_comm .
477+ METHOD zif_diff3 ~diff_comm .
476478 " We apply the LCS to build a 'comm'-style picture of the
477479 " differences between buffer1 and buffer2.
478480
479481 DATA :
480482 ls_res LIKE LINE OF rt_result,
481- ls_different TYPE zif_differ_diff3 =>ty_comm_result-diff,
482- lt_common TYPE zif_differ_diff3 =>ty_comm_result-common.
483+ ls_different TYPE zif_diff3 =>ty_comm_result-diff,
484+ lt_common TYPE zif_diff3 =>ty_comm_result-common.
483485
484- DATA (lt_lcs ) = zif_differ_diff3 ~lcs( it_buffer1 = it_buffer1
486+ DATA (lt_lcs ) = zif_diff3 ~lcs( it_buffer1 = it_buffer1
485487 it_buffer2 = it_buffer2 ).
486488
487489 DATA (lv_tail1 ) = lines ( it_buffer1 ).
@@ -538,12 +540,12 @@ CLASS zcl_differ_diff3 IMPLEMENTATION.
538540 ENDMETHOD .
539541
540542
541- METHOD zif_differ_diff3 ~diff_indices .
543+ METHOD zif_diff3 ~diff_indices .
542544 " We apply the LCS to give a simple representation of the
543545 " offsets and lengths of mismatched chunks in the input
544546 " buffers. This is used by diff3MergeRegions.
545547
546- DATA (lt_lcs ) = zif_differ_diff3 ~lcs(
548+ DATA (lt_lcs ) = zif_diff3 ~lcs(
547549 it_buffer1 = it_buffer1
548550 it_buffer2 = it_buffer2 ).
549551
@@ -562,7 +564,7 @@ CLASS zcl_differ_diff3 IMPLEMENTATION.
562564 lv_tail2 = ls_candidate-buffer2index.
563565
564566 IF lv_mismatch_length1 > 0 OR lv_mismatch_length2 > 0 .
565- DATA (ls_result ) = VALUE zif_differ_diff3 =>ty_diff_indices_result(
567+ DATA (ls_result ) = VALUE zif_diff3 =>ty_diff_indices_result(
566568 buffer1-key = lv_tail1 + 1
567569 buffer1-len = lv_mismatch_length1
568570 buffer1content = _slice(
@@ -584,13 +586,13 @@ CLASS zcl_differ_diff3 IMPLEMENTATION.
584586 ENDMETHOD .
585587
586588
587- METHOD zif_differ_diff3 ~diff_patch .
589+ METHOD zif_diff3 ~diff_patch .
588590 " We apply the LCS to build a JSON representation of a
589591 " diff(1)-style patch.
590592
591593 DATA ls_result LIKE LINE OF rt_result.
592594
593- DATA (lt_lcs ) = zif_differ_diff3 ~lcs( it_buffer1 = it_buffer1
595+ DATA (lt_lcs ) = zif_diff3 ~lcs( it_buffer1 = it_buffer1
594596 it_buffer2 = it_buffer2 ).
595597
596598 DATA (lv_tail1 ) = lines ( it_buffer1 ).
@@ -624,7 +626,7 @@ CLASS zcl_differ_diff3 IMPLEMENTATION.
624626 ENDMETHOD .
625627
626628
627- METHOD zif_differ_diff3 ~invert_patch .
629+ METHOD zif_diff3 ~invert_patch .
628630 " Takes the output of diffPatch(), and inverts the sense of it, so that it
629631 " can be applied to buffer2 to give buffer1 rather than the other way around.
630632
@@ -640,7 +642,7 @@ CLASS zcl_differ_diff3 IMPLEMENTATION.
640642 ENDMETHOD .
641643
642644
643- METHOD zif_differ_diff3 ~lcs .
645+ METHOD zif_diff3 ~lcs .
644646 " Text diff algorithm following Hunt and McIlroy 1976.
645647 " J. W. Hunt and M. D. McIlroy, An algorithm for differential buffer
646648 " comparison, Bell Telephone Laboratories CSTR #41 (1976)
@@ -652,13 +654,13 @@ CLASS zcl_differ_diff3 IMPLEMENTATION.
652654 TYPES :
653655 BEGIN OF ty_equivalenceclass,
654656 key TYPE string ,
655- values TYPE zif_differ_diff3 =>ty_numbers,
657+ values TYPE zif_diff3 =>ty_numbers,
656658 END OF ty_equivalenceclass.
657659
658660 DATA :
659661 lt_equivalenceclasses TYPE HASHED TABLE OF ty_equivalenceclass WITH UNIQUE KEY key ,
660- lt_candidates TYPE zif_differ_diff3 =>ty_lcs_result_t,
661- ls_newcandidate TYPE zif_differ_diff3 =>ty_lcs_result.
662+ lt_candidates TYPE zif_diff3 =>ty_lcs_result_t,
663+ ls_newcandidate TYPE zif_diff3 =>ty_lcs_result.
662664
663665 DATA (lv_j ) = 0 .
664666 LOOP AT it_buffer2 ASSIGNING FIELD-SYMBOL (<lv_buffer2> ).
@@ -672,7 +674,7 @@ CLASS zcl_differ_diff3 IMPLEMENTATION.
672674 lv_j = lv_j + 1 .
673675 ENDLOOP .
674676
675- DATA (ls_nullresult ) = VALUE zif_differ_diff3 =>ty_lcs_result(
677+ DATA (ls_nullresult ) = VALUE zif_diff3 =>ty_lcs_result(
676678 key = 0
677679 buffer1index = -1
678680 buffer2index = -1
@@ -747,11 +749,11 @@ CLASS zcl_differ_diff3 IMPLEMENTATION.
747749 ENDMETHOD .
748750
749751
750- METHOD zif_differ_diff3 ~merge .
752+ METHOD zif_diff3 ~merge .
751753
752754 DATA (ls_labels ) = get_labels( is_labels ).
753755
754- DATA (lt_regions ) = zif_differ_diff3 ~diff3_merge(
756+ DATA (lt_regions ) = zif_diff3 ~diff3_merge(
755757 it_a = it_a
756758 it_o = it_o
757759 it_b = it_b
@@ -773,11 +775,11 @@ CLASS zcl_differ_diff3 IMPLEMENTATION.
773775 ENDMETHOD .
774776
775777
776- METHOD zif_differ_diff3 ~merge_diff3 .
778+ METHOD zif_diff3 ~merge_diff3 .
777779
778780 DATA (ls_labels ) = get_labels( is_labels ).
779781
780- DATA (lt_regions ) = zif_differ_diff3 ~diff3_merge(
782+ DATA (lt_regions ) = zif_diff3 ~diff3_merge(
781783 it_a = it_a
782784 it_o = it_o
783785 it_b = it_b
@@ -801,11 +803,11 @@ CLASS zcl_differ_diff3 IMPLEMENTATION.
801803 ENDMETHOD .
802804
803805
804- METHOD zif_differ_diff3 ~merge_dig_in .
806+ METHOD zif_diff3 ~merge_dig_in .
805807
806808 DATA (ls_labels ) = get_labels( is_labels ).
807809
808- DATA (lt_regions ) = zif_differ_diff3 ~diff3_merge(
810+ DATA (lt_regions ) = zif_diff3 ~diff3_merge(
809811 it_a = it_a
810812 it_o = it_o
811813 it_b = it_b
@@ -815,7 +817,7 @@ CLASS zcl_differ_diff3 IMPLEMENTATION.
815817 IF <ls_region> -ok IS NOT INITIAL .
816818 INSERT LINES OF <ls_region> -ok INTO TABLE rs_result-result.
817819 ELSE .
818- DATA (lt_c ) = zif_differ_diff3 ~diff_comm(
820+ DATA (lt_c ) = zif_diff3 ~diff_comm(
819821 it_buffer1 = <ls_region> -conflict-a
820822 it_buffer2 = <ls_region> -conflict-b ).
821823
@@ -837,7 +839,7 @@ CLASS zcl_differ_diff3 IMPLEMENTATION.
837839 ENDMETHOD .
838840
839841
840- METHOD zif_differ_diff3 ~patch .
842+ METHOD zif_diff3 ~patch .
841843 " Applies a patch to a buffer.
842844 " Given buffer1 and buffer2, `patch(buffer1, diffPatch(buffer1, buffer2))` should give buffer2.
843845
@@ -864,7 +866,7 @@ CLASS zcl_differ_diff3 IMPLEMENTATION.
864866 ENDMETHOD .
865867
866868
867- METHOD zif_differ_diff3 ~strip_patch .
869+ METHOD zif_diff3 ~strip_patch .
868870 " Takes the output of diffPatch(), and removes extra information from it.
869871 " It can still be used by patch(), below, but can no longer be inverted.
870872
0 commit comments