mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
Diff: Improve beacons (#4982)
* Diff: Improve beacons Add a few modularization statements to beacon detection. Mostly relevant for longer programs with list events. * More beacons
This commit is contained in:
parent
e0a9f1ccac
commit
23172c4f92
|
@ -169,6 +169,31 @@ CLASS zcl_abapgit_diff IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD create_regex_set.
|
||||||
|
|
||||||
|
DATA: lo_regex TYPE REF TO cl_abap_regex,
|
||||||
|
lt_regex TYPE zif_abapgit_definitions=>ty_string_tt,
|
||||||
|
lv_regex LIKE LINE OF lt_regex.
|
||||||
|
|
||||||
|
APPEND '^\s*(CLASS|FORM|MODULE|REPORT|METHOD|INTERFACE|FUNCTION)\s' TO lt_regex.
|
||||||
|
APPEND '^\s*(CLASS|INTERFACE|FUNCTION|TYPE)-POOL\s' TO lt_regex.
|
||||||
|
APPEND '^\s*(START|END)-OF-SELECTION(\s|\.)' TO lt_regex.
|
||||||
|
APPEND '^\s*INITIALIZATION(\s|\.)' TO lt_regex.
|
||||||
|
APPEND '^\s*(TOP-OF-PAGE|END-OF-PAGE)(\s|\.)' TO lt_regex.
|
||||||
|
APPEND '^\s*AT\s*(SELECTION-SCREEN|LINE-SELECTION|USER-COMMAND|PF\d+)(\s|\.)' TO lt_regex.
|
||||||
|
APPEND '^\s*(DEFINE|ENHANCEMENT)\s' TO lt_regex.
|
||||||
|
|
||||||
|
LOOP AT lt_regex INTO lv_regex.
|
||||||
|
CREATE OBJECT lo_regex
|
||||||
|
EXPORTING
|
||||||
|
pattern = lv_regex
|
||||||
|
ignore_case = abap_true.
|
||||||
|
APPEND lo_regex TO rt_regex_set.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD get.
|
METHOD get.
|
||||||
rt_diff = mt_diff.
|
rt_diff = mt_diff.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -179,6 +204,21 @@ CLASS zcl_abapgit_diff IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD is_line_patched.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_diff> TYPE zif_abapgit_definitions=>ty_diff.
|
||||||
|
|
||||||
|
READ TABLE mt_diff INDEX iv_index
|
||||||
|
ASSIGNING <ls_diff>.
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
rv_patched = <ls_diff>-patch_flag.
|
||||||
|
ELSE.
|
||||||
|
zcx_abapgit_exception=>raise( |Diff line not found { iv_index }| ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD map_beacons.
|
METHOD map_beacons.
|
||||||
|
|
||||||
DATA: lv_beacon_idx TYPE i VALUE co_starting_beacon,
|
DATA: lv_beacon_idx TYPE i VALUE co_starting_beacon,
|
||||||
|
@ -212,6 +252,8 @@ CLASS zcl_abapgit_diff IMPLEMENTATION.
|
||||||
IF lv_offs > 0.
|
IF lv_offs > 0.
|
||||||
lv_beacon_str = lv_beacon_str(lv_offs).
|
lv_beacon_str = lv_beacon_str(lv_offs).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
lv_beacon_str = condense( val = lv_beacon_str
|
||||||
|
del = ` ` ).
|
||||||
|
|
||||||
IF lv_submatch = 'CLASS'.
|
IF lv_submatch = 'CLASS'.
|
||||||
lv_beacon_2lev = lv_beacon_str.
|
lv_beacon_2lev = lv_beacon_str.
|
||||||
|
@ -299,6 +341,24 @@ CLASS zcl_abapgit_diff IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD set_patch_by_old_diff.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_diff> TYPE zif_abapgit_definitions=>ty_diff.
|
||||||
|
|
||||||
|
LOOP AT mt_diff ASSIGNING <ls_diff>
|
||||||
|
WHERE old = is_diff_old-old
|
||||||
|
AND new = is_diff_old-new
|
||||||
|
AND new_num = is_diff_old-new_num
|
||||||
|
AND old_num = is_diff_old-old_num.
|
||||||
|
|
||||||
|
<ls_diff>-patch_flag = iv_patch_flag.
|
||||||
|
EXIT.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD set_patch_new.
|
METHOD set_patch_new.
|
||||||
|
|
||||||
DATA: lv_new_num TYPE i.
|
DATA: lv_new_num TYPE i.
|
||||||
|
@ -403,58 +463,4 @@ CLASS zcl_abapgit_diff IMPLEMENTATION.
|
||||||
SPLIT lv_old AT zif_abapgit_definitions=>c_newline INTO TABLE et_old.
|
SPLIT lv_old AT zif_abapgit_definitions=>c_newline INTO TABLE et_old.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD create_regex_set.
|
|
||||||
|
|
||||||
DATA: lo_regex TYPE REF TO cl_abap_regex,
|
|
||||||
lt_regex TYPE zif_abapgit_definitions=>ty_string_tt,
|
|
||||||
lv_regex LIKE LINE OF lt_regex.
|
|
||||||
|
|
||||||
APPEND '^\s*(CLASS|FORM|MODULE|REPORT|METHOD)\s' TO lt_regex.
|
|
||||||
APPEND '^\s*START-OF-' TO lt_regex.
|
|
||||||
APPEND '^\s*INITIALIZATION(\s|\.)' TO lt_regex.
|
|
||||||
|
|
||||||
LOOP AT lt_regex INTO lv_regex.
|
|
||||||
CREATE OBJECT lo_regex
|
|
||||||
EXPORTING
|
|
||||||
pattern = lv_regex
|
|
||||||
ignore_case = abap_true.
|
|
||||||
APPEND lo_regex TO rt_regex_set.
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD is_line_patched.
|
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_diff> TYPE zif_abapgit_definitions=>ty_diff.
|
|
||||||
|
|
||||||
READ TABLE mt_diff INDEX iv_index
|
|
||||||
ASSIGNING <ls_diff>.
|
|
||||||
IF sy-subrc = 0.
|
|
||||||
rv_patched = <ls_diff>-patch_flag.
|
|
||||||
ELSE.
|
|
||||||
zcx_abapgit_exception=>raise( |Diff line not found { iv_index }| ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD set_patch_by_old_diff.
|
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_diff> TYPE zif_abapgit_definitions=>ty_diff.
|
|
||||||
|
|
||||||
LOOP AT mt_diff ASSIGNING <ls_diff>
|
|
||||||
WHERE old = is_diff_old-old
|
|
||||||
AND new = is_diff_old-new
|
|
||||||
AND new_num = is_diff_old-new_num
|
|
||||||
AND old_num = is_diff_old-old_num.
|
|
||||||
|
|
||||||
<ls_diff>-patch_flag = iv_patch_flag.
|
|
||||||
EXIT.
|
|
||||||
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user