diff --git a/src/ui/zcl_abapgit_gui.clas.abap b/src/ui/zcl_abapgit_gui.clas.abap index 6185bf4ff..8b0db852c 100644 --- a/src/ui/zcl_abapgit_gui.clas.abap +++ b/src/ui/zcl_abapgit_gui.clas.abap @@ -22,6 +22,7 @@ CLASS zcl_abapgit_gui DEFINITION RAISING zcx_abapgit_exception. + PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_page_stack, @@ -117,12 +118,12 @@ CLASS ZCL_ABAPGIT_GUI IMPLEMENTATION. ASSERT iv_text IS SUPPLIED OR iv_xdata IS SUPPLIED. IF iv_text IS SUPPLIED. " String input - lv_xstr = zcl_abapgit_gui_asset_manager=>string_to_xstring( iv_text ). + lv_xstr = zcl_abapgit_string_utils=>string_to_xstring( iv_text ). ELSE. " Raw input lv_xstr = iv_xdata. ENDIF. - zcl_abapgit_gui_asset_manager=>xstring_to_bintab( + zcl_abapgit_string_utils=>xstring_to_bintab( EXPORTING iv_xstr = lv_xstr IMPORTING @@ -180,6 +181,7 @@ CLASS ZCL_ABAPGIT_GUI IMPLEMENTATION. ENDMETHOD. + METHOD get_current_page_name. IF mi_cur_page IS BOUND. rv_page_name = diff --git a/src/ui/zcl_abapgit_gui_asset_manager.clas.abap b/src/ui/zcl_abapgit_gui_asset_manager.clas.abap index a7fc33d18..d004bd029 100644 --- a/src/ui/zcl_abapgit_gui_asset_manager.clas.abap +++ b/src/ui/zcl_abapgit_gui_asset_manager.clas.abap @@ -4,32 +4,7 @@ CLASS zcl_abapgit_gui_asset_manager DEFINITION PUBLIC FINAL CREATE PUBLIC . INTERFACES zif_abapgit_gui_asset_manager. - CLASS-METHODS string_to_xstring - IMPORTING - iv_str TYPE string - RETURNING - VALUE(rv_xstr) TYPE xstring. - - CLASS-METHODS base64_to_xstring - IMPORTING - iv_base64 TYPE string - RETURNING - VALUE(rv_xstr) TYPE xstring. - - CLASS-METHODS bintab_to_xstring - IMPORTING - it_bintab TYPE lvc_t_mime - iv_size TYPE i - RETURNING - VALUE(rv_xstr) TYPE xstring. - - CLASS-METHODS xstring_to_bintab - IMPORTING - iv_xstr TYPE xstring - EXPORTING - ev_size TYPE i - et_bintab TYPE lvc_t_mime. - + PROTECTED SECTION. PRIVATE SECTION. METHODS get_textlike_asset @@ -57,65 +32,6 @@ ENDCLASS. CLASS ZCL_ABAPGIT_GUI_ASSET_MANAGER IMPLEMENTATION. - METHOD zif_abapgit_gui_asset_manager~get_all_assets. - - DATA: - lt_assets TYPE zif_abapgit_gui_asset_manager=>tt_web_assets, - ls_asset LIKE LINE OF lt_assets. - - ls_asset = get_textlike_asset( 'css/common.css' ). - APPEND ls_asset TO rt_assets. - ls_asset = get_textlike_asset( 'js/common.js' ). - APPEND ls_asset TO rt_assets. - - lt_assets = get_inline_images( ). - APPEND LINES OF lt_assets TO rt_assets. - - ENDMETHOD. - - - METHOD get_textlike_asset. - -* used by abapmerge - DEFINE _inline. - APPEND &1 TO lt_data. - END-OF-DEFINITION. - - DATA: - lt_data TYPE string_table, - lv_mime_name TYPE wwwdatatab-objid, - lv_str TYPE string. - - CASE iv_asset_url. - WHEN 'css/common.css'. - rs_asset-url = iv_asset_url. - rs_asset-type = 'text'. - rs_asset-subtype = 'css'. - lv_mime_name = 'ZABAPGIT_CSS_COMMON'. - " @@abapmerge include zabapgit_css_common.w3mi.data.css > _inline '$$'. - WHEN 'js/common.js'. - rs_asset-url = iv_asset_url. - rs_asset-type = 'text'. - rs_asset-subtype = 'javascript'. - lv_mime_name = 'ZABAPGIT_JS_COMMON'. - " @@abapmerge include zabapgit_js_common.w3mi.data.js > _inline '$$'. - WHEN OTHERS. - zcx_abapgit_exception=>raise( |No inline resource: { iv_asset_url }| ). - ENDCASE. - - IF lt_data IS NOT INITIAL. - CONCATENATE LINES OF lt_data INTO lv_str SEPARATED BY zif_abapgit_definitions=>c_newline. - rs_asset-content = string_to_xstring( lv_str ). - ELSE. - rs_asset-content = get_mime_asset( lv_mime_name ). - ENDIF. - - IF rs_asset-content IS INITIAL. - zcx_abapgit_exception=>raise( |Failed to get GUI resource: { iv_asset_url }| ). - ENDIF. - - ENDMETHOD. - METHOD get_inline_images. @@ -207,7 +123,7 @@ CLASS ZCL_ABAPGIT_GUI_ASSET_MANAGER IMPLEMENTATION. && 'X9K+ygQTFGDcHhaaoGJyouDNV7JH+eGj4mF6gspoC+tzJt1ObsT4MDsF2zxs886+Ml5v' && '/PogUvEwPUGFiE+SX4gAtQa1gkhV7onQR4oJMR5oxC6stDeghd7Dh6E+CPw/HL4vVO2f' && 'cpUAAAAASUVORK5CYII='. - ls_image-content = base64_to_xstring( lv_base64 ). + ls_image-content = zcl_abapgit_string_utils=>base64_to_xstring( lv_base64 ). APPEND ls_image TO rt_images. ENDMETHOD. @@ -254,64 +170,69 @@ CLASS ZCL_ABAPGIT_GUI_ASSET_MANAGER IMPLEMENTATION. RETURN. ENDIF. - rv_xdata = bintab_to_xstring( + rv_xdata = zcl_abapgit_string_utils=>bintab_to_xstring( iv_size = lv_size it_bintab = lt_w3mime ). ENDMETHOD. - METHOD string_to_xstring. + METHOD get_textlike_asset. - CALL FUNCTION 'SCMS_STRING_TO_XSTRING' - EXPORTING - text = iv_str - IMPORTING - buffer = rv_xstr - EXCEPTIONS - OTHERS = 1. - ASSERT sy-subrc = 0. +* used by abapmerge + DEFINE _inline. + APPEND &1 TO lt_data. + END-OF-DEFINITION. + + DATA: + lt_data TYPE string_table, + lv_mime_name TYPE wwwdatatab-objid, + lv_str TYPE string. + + CASE iv_asset_url. + WHEN 'css/common.css'. + rs_asset-url = iv_asset_url. + rs_asset-type = 'text'. + rs_asset-subtype = 'css'. + lv_mime_name = 'ZABAPGIT_CSS_COMMON'. + " @@abapmerge include zabapgit_css_common.w3mi.data.css > _inline '$$'. + WHEN 'js/common.js'. + rs_asset-url = iv_asset_url. + rs_asset-type = 'text'. + rs_asset-subtype = 'javascript'. + lv_mime_name = 'ZABAPGIT_JS_COMMON'. + " @@abapmerge include zabapgit_js_common.w3mi.data.js > _inline '$$'. + WHEN OTHERS. + zcx_abapgit_exception=>raise( |No inline resource: { iv_asset_url }| ). + ENDCASE. + + IF lt_data IS NOT INITIAL. + CONCATENATE LINES OF lt_data INTO lv_str SEPARATED BY zif_abapgit_definitions=>c_newline. + rs_asset-content = zcl_abapgit_string_utils=>string_to_xstring( lv_str ). + ELSE. + rs_asset-content = get_mime_asset( lv_mime_name ). + ENDIF. + + IF rs_asset-content IS INITIAL. + zcx_abapgit_exception=>raise( |Failed to get GUI resource: { iv_asset_url }| ). + ENDIF. ENDMETHOD. - METHOD base64_to_xstring. - CALL FUNCTION 'SSFC_BASE64_DECODE' - EXPORTING - b64data = iv_base64 - IMPORTING - bindata = rv_xstr - EXCEPTIONS - OTHERS = 1. - ASSERT sy-subrc = 0. + METHOD zif_abapgit_gui_asset_manager~get_all_assets. + + DATA: + lt_assets TYPE zif_abapgit_gui_asset_manager=>tt_web_assets, + ls_asset LIKE LINE OF lt_assets. + + ls_asset = get_textlike_asset( 'css/common.css' ). + APPEND ls_asset TO rt_assets. + ls_asset = get_textlike_asset( 'js/common.js' ). + APPEND ls_asset TO rt_assets. + + lt_assets = get_inline_images( ). + APPEND LINES OF lt_assets TO rt_assets. ENDMETHOD. - - METHOD bintab_to_xstring. - - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = iv_size - IMPORTING - buffer = rv_xstr - TABLES - binary_tab = it_bintab - EXCEPTIONS - failed = 1 ##FM_SUBRC_OK. - ASSERT sy-subrc = 0. - - ENDMETHOD. - - METHOD xstring_to_bintab. - - CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' - EXPORTING - buffer = iv_xstr - IMPORTING - output_length = ev_size - TABLES - binary_tab = et_bintab. - - ENDMETHOD. - ENDCLASS. diff --git a/src/zcl_abapgit_string_utils.clas.abap b/src/zcl_abapgit_string_utils.clas.abap new file mode 100644 index 000000000..61f899ab3 --- /dev/null +++ b/src/zcl_abapgit_string_utils.clas.abap @@ -0,0 +1,98 @@ +CLASS zcl_abapgit_string_utils DEFINITION + PUBLIC + FINAL + CREATE PUBLIC . + + PUBLIC SECTION. + + CLASS-METHODS string_to_xstring + IMPORTING + iv_str TYPE string + RETURNING + VALUE(rv_xstr) TYPE xstring. + + CLASS-METHODS base64_to_xstring + IMPORTING + iv_base64 TYPE string + RETURNING + VALUE(rv_xstr) TYPE xstring. + + CLASS-METHODS bintab_to_xstring + IMPORTING + it_bintab TYPE lvc_t_mime + iv_size TYPE i + RETURNING + VALUE(rv_xstr) TYPE xstring. + + CLASS-METHODS xstring_to_bintab + IMPORTING + iv_xstr TYPE xstring + EXPORTING + ev_size TYPE i + et_bintab TYPE lvc_t_mime. + + PROTECTED SECTION. + PRIVATE SECTION. +ENDCLASS. + + + +CLASS ZCL_ABAPGIT_STRING_UTILS IMPLEMENTATION. + + + METHOD base64_to_xstring. + + CALL FUNCTION 'SSFC_BASE64_DECODE' + EXPORTING + b64data = iv_base64 + IMPORTING + bindata = rv_xstr + EXCEPTIONS + OTHERS = 1. + ASSERT sy-subrc = 0. + + ENDMETHOD. + + + METHOD bintab_to_xstring. + + CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' + EXPORTING + input_length = iv_size + IMPORTING + buffer = rv_xstr + TABLES + binary_tab = it_bintab + EXCEPTIONS + failed = 1 ##FM_SUBRC_OK. + ASSERT sy-subrc = 0. + + ENDMETHOD. + + + METHOD string_to_xstring. + + CALL FUNCTION 'SCMS_STRING_TO_XSTRING' + EXPORTING + text = iv_str + IMPORTING + buffer = rv_xstr + EXCEPTIONS + OTHERS = 1. + ASSERT sy-subrc = 0. + + ENDMETHOD. + + + METHOD xstring_to_bintab. + + CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' + EXPORTING + buffer = iv_xstr + IMPORTING + output_length = ev_size + TABLES + binary_tab = et_bintab. + + ENDMETHOD. +ENDCLASS. diff --git a/src/zcl_abapgit_string_utils.clas.xml b/src/zcl_abapgit_string_utils.clas.xml new file mode 100644 index 000000000..aca1dc776 --- /dev/null +++ b/src/zcl_abapgit_string_utils.clas.xml @@ -0,0 +1,19 @@ + + + + + + ZCL_ABAPGIT_STRING_UTILS + 1 + E + Abapgit string utilities + 2 + 1 + X + X + X + X + + + +