abapGit/src/utils/zcl_abapgit_utils.clas.abap
Alexander Tsybulsky 9574dca828
html event abstraction, phase 2 (action utils usage unification) (#3902)
* action utils improvements

* page unifications

* linter
2020-09-19 11:02:01 +02:00

76 lines
1.6 KiB
ABAP

CLASS zcl_abapgit_utils DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
CLASS-METHODS is_binary
IMPORTING
!iv_data TYPE xstring
RETURNING
VALUE(rv_yes) TYPE abap_bool .
CLASS-METHODS extract_author_data
IMPORTING
!iv_author TYPE string
EXPORTING
!ev_author TYPE zif_abapgit_definitions=>ty_commit-author
!ev_email TYPE zif_abapgit_definitions=>ty_commit-email
!ev_time TYPE zif_abapgit_definitions=>ty_commit-time
RAISING
zcx_abapgit_exception .
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS ZCL_ABAPGIT_UTILS IMPLEMENTATION.
METHOD extract_author_data.
" unix time stamps are in same time zone, so ignore the zone
FIND REGEX zif_abapgit_definitions=>c_author_regex IN iv_author
SUBMATCHES
ev_author
ev_email
ev_time.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error author regex value='{ iv_author }'| ).
ENDIF.
ENDMETHOD.
METHOD is_binary.
DATA: lv_len TYPE i,
lv_idx TYPE i,
lv_x TYPE x.
lv_len = xstrlen( iv_data ).
IF lv_len = 0.
RETURN.
ENDIF.
IF lv_len > 100.
lv_len = 100.
ENDIF.
" Simple char range test
" stackoverflow.com/questions/277521/how-to-identify-the-file-content-as-ascii-or-binary
DO lv_len TIMES. " I'm sure there is more efficient way ...
lv_idx = sy-index - 1.
lv_x = iv_data+lv_idx(1).
IF NOT ( lv_x BETWEEN 9 AND 13 OR lv_x BETWEEN 32 AND 126 ).
rv_yes = abap_true.
EXIT.
ENDIF.
ENDDO.
ENDMETHOD.
ENDCLASS.