diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index 64a6263f7..b17174b1e 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -3,7 +3,7 @@ REPORT zabapgit LINE-SIZE 100. * See http://www.abapgit.org CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT - gc_abap_version TYPE string VALUE 'v1.26.4'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v1.26.5'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) diff --git a/src/zabapgit_file_status.prog.abap b/src/zabapgit_file_status.prog.abap index c81453dae..3f9921343 100644 --- a/src/zabapgit_file_status.prog.abap +++ b/src/zabapgit_file_status.prog.abap @@ -175,6 +175,8 @@ CLASS lcl_file_status IMPLEMENTATION. " Handle namespaces REPLACE ALL OCCURRENCES OF '#' IN lv_name WITH '/'. + REPLACE ALL OCCURRENCES OF '#' IN lv_type WITH '/'. + REPLACE ALL OCCURRENCES OF '#' IN lv_ext WITH '/'. CLEAR es_item. es_item-obj_type = lv_type. diff --git a/src/zabapgit_objects.prog.abap b/src/zabapgit_objects.prog.abap index e7922d9a7..2bd281a13 100644 --- a/src/zabapgit_objects.prog.abap +++ b/src/zabapgit_objects.prog.abap @@ -455,8 +455,7 @@ CLASS lcl_objects_files IMPLEMENTATION. ELSE. lv_obj_name = ms_item-obj_name. ENDIF. -* handle namespaces - REPLACE ALL OCCURRENCES OF '/' IN lv_obj_name WITH '#'. + IF iv_extra IS INITIAL. CONCATENATE lv_obj_name '.' ms_item-obj_type '.' iv_ext @@ -465,6 +464,9 @@ CLASS lcl_objects_files IMPLEMENTATION. CONCATENATE lv_obj_name '.' ms_item-obj_type '.' iv_extra '.' iv_ext INTO rv_filename. "#EC NOTEXT ENDIF. + +* handle namespaces + REPLACE ALL OCCURRENCES OF '/' IN rv_filename WITH '#'. TRANSLATE rv_filename TO LOWER CASE. ENDMETHOD. "filename diff --git a/src/zabapgit_page_db.prog.abap b/src/zabapgit_page_db.prog.abap index 09bc33a72..677330be4 100644 --- a/src/zabapgit_page_db.prog.abap +++ b/src/zabapgit_page_db.prog.abap @@ -45,8 +45,7 @@ CLASS lcl_gui_page_db_display IMPLEMENTATION. ls_action-type = ms_key-type. ls_action-value = ms_key-value. lv_action = lcl_html_action_utils=>dbkey_encode( ls_action ). - lv_data = lcl_xml_pretty=>print( lv_data ). - lv_data = lo_highlighter->process_line( lv_data ). + lv_data = lo_highlighter->process_line( lcl_xml_pretty=>print( lv_data ) ). CREATE OBJECT ro_html. @@ -107,9 +106,7 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION. iv_type = ms_key-type iv_value = ms_key-value ). - lv_data = lcl_xml_pretty=>print( lv_data ). - - lv_data = escape( val = lv_data + lv_data = escape( val = lcl_xml_pretty=>print( lv_data ) format = cl_abap_format=>e_html_attr ). CREATE OBJECT ro_html. diff --git a/src/zabapgit_persistence.prog.abap b/src/zabapgit_persistence.prog.abap index 499c3da02..25205845c 100644 --- a/src/zabapgit_persistence.prog.abap +++ b/src/zabapgit_persistence.prog.abap @@ -81,8 +81,9 @@ CLASS lcl_persistence_db DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app. RAISING lcx_exception. PRIVATE SECTION. - METHODS: validate_xml - IMPORTING iv_xml TYPE string + METHODS: validate_and_unprettify_xml + IMPORTING iv_xml TYPE string + RETURNING VALUE(rv_xml) TYPE string RAISING lcx_exception. ENDCLASS. @@ -832,29 +833,32 @@ CLASS lcl_persistence_db IMPLEMENTATION. ENDMETHOD. - METHOD validate_xml. + METHOD validate_and_unprettify_xml. - lcl_xml_pretty=>print( + rv_xml = lcl_xml_pretty=>print( iv_xml = iv_xml + iv_unpretty = abap_true iv_ignore_errors = abap_false ). - ENDMETHOD. + ENDMETHOD. " validate_and_unprettify_xml METHOD update. - validate_xml( iv_data ). + DATA lv_data LIKE iv_data. + + lv_data = validate_and_unprettify_xml( iv_data ). lock( iv_type = iv_type iv_value = iv_value ). - UPDATE (c_tabname) SET data_str = iv_data - WHERE type = iv_type - AND value = iv_value. + UPDATE (c_tabname) SET data_str = lv_data + WHERE type = iv_type + AND value = iv_value. IF sy-subrc <> 0. lcx_exception=>raise( 'DB update failed' ). ENDIF. - ENDMETHOD. + ENDMETHOD. "update METHOD modify. diff --git a/src/zabapgit_popups.prog.abap b/src/zabapgit_popups.prog.abap index 3cd11daca..acf62a0b3 100644 --- a/src/zabapgit_popups.prog.abap +++ b/src/zabapgit_popups.prog.abap @@ -301,9 +301,10 @@ CLASS lcl_popups IMPLEMENTATION. DATA: lo_branches TYPE REF TO lcl_git_branch_list, lt_branches TYPE lcl_git_branch_list=>ty_git_branch_list_tt, - lv_head_suffix TYPE string, lv_answer TYPE c LENGTH 1, - lv_default TYPE i VALUE 1, "Default cursor position + lv_default TYPE i, + lv_head_suffix TYPE string, + lv_head_symref TYPE string, lt_selection TYPE TABLE OF spopli. FIELD-SYMBOLS: LIKE LINE OF lt_selection, @@ -313,28 +314,43 @@ CLASS lcl_popups IMPLEMENTATION. lo_branches = lcl_git_transport=>branches( iv_url ). lt_branches = lo_branches->get_branches_only( ). lv_head_suffix = | ({ lcl_git_branch_list=>c_head_name })|. + lv_head_symref = lo_branches->get_head_symref( ). LOOP AT lt_branches ASSIGNING . - IF -name = lcl_git_branch_list=>c_head_name - AND -name <> lo_branches->get_head_symref( ). - " HEAD but other HEAD symref exist - CONTINUE. - ENDIF. + CHECK -name IS NOT INITIAL. " To ensure some below ifs - APPEND INITIAL LINE TO lt_selection ASSIGNING . - IF iv_default_branch IS NOT INITIAL AND iv_default_branch = -name. - lv_default = sy-tabix. - ENDIF. + IF -is_head = abap_true. - IF -name = lo_branches->get_head_symref( ) - AND -name <> lcl_git_branch_list=>c_head_name. - " HEAD symref but not HEAD itself - -varoption = -display_name && lv_head_suffix. + IF -name = lcl_git_branch_list=>c_head_name. " HEAD + IF -name <> lv_head_symref AND lv_head_symref IS NOT INITIAL. + " HEAD but other HEAD symref exists - ignore + CONTINUE. + ELSE. + INSERT INITIAL LINE INTO lt_selection INDEX 1 ASSIGNING . + -varoption = -name. + ENDIF. + ELSE. + INSERT INITIAL LINE INTO lt_selection INDEX 1 ASSIGNING . + -varoption = -display_name && lv_head_suffix. + ENDIF. + + IF lv_default > 0. " Shift down default if set + lv_default = lv_default + 1. + ENDIF. ELSE. + APPEND INITIAL LINE TO lt_selection ASSIGNING . -varoption = -display_name. ENDIF. + IF -name = iv_default_branch. + IF -is_head = abap_true. + lv_default = 1. + ELSE. + lv_default = sy-tabix. + ENDIF. + ENDIF. + ENDLOOP. IF iv_show_new_option = abap_true. @@ -378,7 +394,6 @@ CLASS lcl_popups IMPLEMENTATION. rs_branch = lo_branches->find_by_name( -name ). ENDIF. - ENDMETHOD. METHOD repo_popup. diff --git a/src/zabapgit_xml.prog.abap b/src/zabapgit_xml.prog.abap index e3aece7cb..9bf5db1dd 100644 --- a/src/zabapgit_xml.prog.abap +++ b/src/zabapgit_xml.prog.abap @@ -374,6 +374,7 @@ CLASS lcl_xml_pretty DEFINITION FINAL. CLASS-METHODS: print IMPORTING iv_xml TYPE string iv_ignore_errors TYPE abap_bool DEFAULT abap_true + iv_unpretty TYPE abap_bool DEFAULT abap_false RETURNING VALUE(rv_xml) TYPE string RAISING lcx_exception. @@ -394,14 +395,14 @@ CLASS lcl_xml_pretty IMPLEMENTATION. ASSERT NOT iv_xml IS INITIAL. - li_ixml = cl_ixml=>create( ). + li_ixml = cl_ixml=>create( ). li_xml_doc = li_ixml->create_document( ). li_stream_factory = li_ixml->create_stream_factory( ). - li_istream = li_stream_factory->create_istream_string( iv_xml ). - li_parser = li_ixml->create_parser( stream_factory = li_stream_factory - istream = li_istream - document = li_xml_doc ). + li_istream = li_stream_factory->create_istream_string( iv_xml ). + li_parser = li_ixml->create_parser( stream_factory = li_stream_factory + istream = li_istream + document = li_xml_doc ). li_parser->set_normalizing( abap_true ). IF li_parser->parse( ) <> 0. IF iv_ignore_errors = abap_true. @@ -414,12 +415,12 @@ CLASS lcl_xml_pretty IMPLEMENTATION. li_istream->close( ). - li_ostream = li_stream_factory->create_ostream_cstring( rv_xml ). + li_ostream = li_stream_factory->create_ostream_cstring( rv_xml ). li_renderer = li_ixml->create_renderer( ostream = li_ostream document = li_xml_doc ). - li_renderer->set_normalizing( abap_true ). + li_renderer->set_normalizing( boolc( iv_unpretty = abap_false ) ). li_renderer->render( ).