diff --git a/src/utils/zcl_abapgit_diff.clas.abap b/src/utils/zcl_abapgit_diff.clas.abap index 886ef7bcf..9cd599e41 100644 --- a/src/utils/zcl_abapgit_diff.clas.abap +++ b/src/utils/zcl_abapgit_diff.clas.abap @@ -169,6 +169,31 @@ CLASS zcl_abapgit_diff IMPLEMENTATION. 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. rt_diff = mt_diff. ENDMETHOD. @@ -179,6 +204,21 @@ CLASS zcl_abapgit_diff IMPLEMENTATION. ENDMETHOD. + METHOD is_line_patched. + + FIELD-SYMBOLS: TYPE zif_abapgit_definitions=>ty_diff. + + READ TABLE mt_diff INDEX iv_index + ASSIGNING . + IF sy-subrc = 0. + rv_patched = -patch_flag. + ELSE. + zcx_abapgit_exception=>raise( |Diff line not found { iv_index }| ). + ENDIF. + + ENDMETHOD. + + METHOD map_beacons. DATA: lv_beacon_idx TYPE i VALUE co_starting_beacon, @@ -212,6 +252,8 @@ CLASS zcl_abapgit_diff IMPLEMENTATION. IF lv_offs > 0. lv_beacon_str = lv_beacon_str(lv_offs). ENDIF. + lv_beacon_str = condense( val = lv_beacon_str + del = ` ` ). IF lv_submatch = 'CLASS'. lv_beacon_2lev = lv_beacon_str. @@ -299,6 +341,24 @@ CLASS zcl_abapgit_diff IMPLEMENTATION. ENDMETHOD. + METHOD set_patch_by_old_diff. + + FIELD-SYMBOLS: TYPE zif_abapgit_definitions=>ty_diff. + + LOOP AT mt_diff ASSIGNING + 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. + + -patch_flag = iv_patch_flag. + EXIT. + + ENDLOOP. + + ENDMETHOD. + + METHOD set_patch_new. 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. 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: TYPE zif_abapgit_definitions=>ty_diff. - - READ TABLE mt_diff INDEX iv_index - ASSIGNING . - IF sy-subrc = 0. - rv_patched = -patch_flag. - ELSE. - zcx_abapgit_exception=>raise( |Diff line not found { iv_index }| ). - ENDIF. - - ENDMETHOD. - - - METHOD set_patch_by_old_diff. - - FIELD-SYMBOLS: TYPE zif_abapgit_definitions=>ty_diff. - - LOOP AT mt_diff ASSIGNING - 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. - - -patch_flag = iv_patch_flag. - EXIT. - - ENDLOOP. - - ENDMETHOD. - ENDCLASS.