mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
zcl_abapgit_string_utils
This commit is contained in:
parent
806b474851
commit
66c3d0c0b7
|
@ -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 =
|
||||
|
|
|
@ -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.
|
||||
|
|
98
src/zcl_abapgit_string_utils.clas.abap
Normal file
98
src/zcl_abapgit_string_utils.clas.abap
Normal 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.
|
19
src/zcl_abapgit_string_utils.clas.xml
Normal file
19
src/zcl_abapgit_string_utils.clas.xml
Normal 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>
|
Loading…
Reference in New Issue
Block a user