zcl_abapgit_string_utils

This commit is contained in:
Alexander Tsybulsky 2018-12-08 20:50:49 +02:00 committed by Lars Hvam
parent 806b474851
commit 66c3d0c0b7
4 changed files with 175 additions and 135 deletions

View File

@ -22,6 +22,7 @@ CLASS zcl_abapgit_gui DEFINITION
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
TYPES: BEGIN OF ty_page_stack, 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. ASSERT iv_text IS SUPPLIED OR iv_xdata IS SUPPLIED.
IF iv_text IS SUPPLIED. " String input 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 ELSE. " Raw input
lv_xstr = iv_xdata. lv_xstr = iv_xdata.
ENDIF. ENDIF.
zcl_abapgit_gui_asset_manager=>xstring_to_bintab( zcl_abapgit_string_utils=>xstring_to_bintab(
EXPORTING EXPORTING
iv_xstr = lv_xstr iv_xstr = lv_xstr
IMPORTING IMPORTING
@ -180,6 +181,7 @@ CLASS ZCL_ABAPGIT_GUI IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD get_current_page_name. METHOD get_current_page_name.
IF mi_cur_page IS BOUND. IF mi_cur_page IS BOUND.
rv_page_name = rv_page_name =

View File

@ -4,32 +4,7 @@ CLASS zcl_abapgit_gui_asset_manager DEFINITION PUBLIC FINAL CREATE PUBLIC .
INTERFACES zif_abapgit_gui_asset_manager. INTERFACES zif_abapgit_gui_asset_manager.
CLASS-METHODS string_to_xstring PROTECTED SECTION.
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.
PRIVATE SECTION. PRIVATE SECTION.
METHODS get_textlike_asset METHODS get_textlike_asset
@ -57,65 +32,6 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_GUI_ASSET_MANAGER IMPLEMENTATION. 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. METHOD get_inline_images.
@ -207,7 +123,7 @@ CLASS ZCL_ABAPGIT_GUI_ASSET_MANAGER IMPLEMENTATION.
&& 'X9K+ygQTFGDcHhaaoGJyouDNV7JH+eGj4mF6gspoC+tzJt1ObsT4MDsF2zxs886+Ml5v' && 'X9K+ygQTFGDcHhaaoGJyouDNV7JH+eGj4mF6gspoC+tzJt1ObsT4MDsF2zxs886+Ml5v'
&& '/PogUvEwPUGFiE+SX4gAtQa1gkhV7onQR4oJMR5oxC6stDeghd7Dh6E+CPw/HL4vVO2f' && '/PogUvEwPUGFiE+SX4gAtQa1gkhV7onQR4oJMR5oxC6stDeghd7Dh6E+CPw/HL4vVO2f'
&& 'cpUAAAAASUVORK5CYII='. && '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. APPEND ls_image TO rt_images.
ENDMETHOD. ENDMETHOD.
@ -254,64 +170,69 @@ CLASS ZCL_ABAPGIT_GUI_ASSET_MANAGER IMPLEMENTATION.
RETURN. RETURN.
ENDIF. ENDIF.
rv_xdata = bintab_to_xstring( rv_xdata = zcl_abapgit_string_utils=>bintab_to_xstring(
iv_size = lv_size iv_size = lv_size
it_bintab = lt_w3mime ). it_bintab = lt_w3mime ).
ENDMETHOD. ENDMETHOD.
METHOD string_to_xstring. METHOD get_textlike_asset.
CALL FUNCTION 'SCMS_STRING_TO_XSTRING' * used by abapmerge
EXPORTING DEFINE _inline.
text = iv_str APPEND &1 TO lt_data.
IMPORTING END-OF-DEFINITION.
buffer = rv_xstr
EXCEPTIONS DATA:
OTHERS = 1. lt_data TYPE string_table,
ASSERT sy-subrc = 0. 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. ENDMETHOD.
METHOD base64_to_xstring.
CALL FUNCTION 'SSFC_BASE64_DECODE' METHOD zif_abapgit_gui_asset_manager~get_all_assets.
EXPORTING
b64data = iv_base64 DATA:
IMPORTING lt_assets TYPE zif_abapgit_gui_asset_manager=>tt_web_assets,
bindata = rv_xstr ls_asset LIKE LINE OF lt_assets.
EXCEPTIONS
OTHERS = 1. ls_asset = get_textlike_asset( 'css/common.css' ).
ASSERT sy-subrc = 0. 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. 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. ENDCLASS.

View File

@ -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.

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_STRING_UTILS</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>Abapgit string utilities</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<CLSFINAL>X</CLSFINAL>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>