From 0cdede068e4d1c89de05463238fe171731a77d30 Mon Sep 17 00:00:00 2001 From: larshp Date: Sun, 11 Jun 2017 08:00:46 +0000 Subject: [PATCH] refactor macro _REDUCE_STATE --- src/zabapgit_repo_browser_util.prog.abap | 25 ++++++++------------ src/zabapgit_util.prog.abap | 29 ++++++++++++++++++++++++ src/zabapgit_view_repo.prog.abap | 6 +++-- 3 files changed, 43 insertions(+), 17 deletions(-) diff --git a/src/zabapgit_repo_browser_util.prog.abap b/src/zabapgit_repo_browser_util.prog.abap index 50e69eeea..3a0d62030 100644 --- a/src/zabapgit_repo_browser_util.prog.abap +++ b/src/zabapgit_repo_browser_util.prog.abap @@ -62,17 +62,6 @@ CLASS lcl_repo_content_list DEFINITION FINAL. ENDCLASS. "lcl_repo_content_browser -DEFINE _reduce_state. - " &1 - prev, &2 - cur - IF &1 = &2 OR &2 IS INITIAL. - ASSERT 1 = 1. " No change - ELSEIF &1 IS INITIAL. - &1 = &2. - ELSE. - &1 = lif_defs=>gc_state-mixed. - ENDIF. -END-OF-DEFINITION. - CLASS lcl_repo_content_list IMPLEMENTATION. METHOD constructor. @@ -146,8 +135,11 @@ CLASS lcl_repo_content_list IMPLEMENTATION. ENDAT. ls_folder-changes = ls_folder-changes + -changes. - _reduce_state ls_folder-lstate -lstate. - _reduce_state ls_folder-rstate -rstate. + + lcl_state=>reduce( EXPORTING iv_cur = -lstate + CHANGING cv_prev = ls_folder-lstate ). + lcl_state=>reduce( EXPORTING iv_cur = -rstate + CHANGING cv_prev = ls_folder-rstate ). AT END OF path. APPEND ls_folder TO ct_repo_items. @@ -229,8 +221,11 @@ CLASS lcl_repo_content_list IMPLEMENTATION. IF ls_file-is_changed = abap_true. -sortkey = c_sortkey-changed. " Changed files -changes = -changes + 1. - _reduce_state -lstate ls_file-lstate. - _reduce_state -rstate ls_file-rstate. + + lcl_state=>reduce( EXPORTING iv_cur = ls_file-lstate + CHANGING cv_prev = -lstate ). + lcl_state=>reduce( EXPORTING iv_cur = -rstate + CHANGING cv_prev = ls_file-rstate ). ENDIF. ENDIF. diff --git a/src/zabapgit_util.prog.abap b/src/zabapgit_util.prog.abap index db0ee274a..a1e56414e 100644 --- a/src/zabapgit_util.prog.abap +++ b/src/zabapgit_util.prog.abap @@ -2,6 +2,35 @@ *& Include ZABAPGIT_UTIL *&---------------------------------------------------------------------* +CLASS lcl_state DEFINITION. + + PUBLIC SECTION. + + CLASS-METHODS: + reduce + IMPORTING + iv_cur TYPE char1 + CHANGING + cv_prev TYPE char1. + +ENDCLASS. + +CLASS lcl_state IMPLEMENTATION. + + METHOD reduce. + + IF cv_prev = iv_cur OR iv_cur IS INITIAL. + RETURN. " No change + ELSEIF cv_prev IS INITIAL. + cv_prev = iv_cur. + ELSE. + cv_prev = lif_defs=>gc_state-mixed. + ENDIF. + + ENDMETHOD. + +ENDCLASS. + *----------------------------------------------------------------------* * CLASS lcl_time DEFINITION *----------------------------------------------------------------------* diff --git a/src/zabapgit_view_repo.prog.abap b/src/zabapgit_view_repo.prog.abap index 8c88e7394..c643522f5 100644 --- a/src/zabapgit_view_repo.prog.abap +++ b/src/zabapgit_view_repo.prog.abap @@ -151,8 +151,10 @@ CLASS lcl_gui_view_repo IMPLEMENTATION. iv_changes_only = mv_changes_only ). LOOP AT lt_repo_items ASSIGNING . - _reduce_state lv_lstate -lstate. - _reduce_state lv_rstate -rstate. + lcl_state=>reduce( EXPORTING iv_cur = -lstate + CHANGING cv_prev = lv_lstate ). + lcl_state=>reduce( EXPORTING iv_cur = -rstate + CHANGING cv_prev = lv_rstate ). ENDLOOP. ro_html->add( render_head_line( iv_lstate = lv_lstate