diff --git a/src/utils/zcl_abapgit_convert.clas.abap b/src/utils/zcl_abapgit_convert.clas.abap
new file mode 100644
index 000000000..7e127bb93
--- /dev/null
+++ b/src/utils/zcl_abapgit_convert.clas.abap
@@ -0,0 +1,168 @@
+CLASS zcl_abapgit_convert DEFINITION
+ PUBLIC
+ CREATE PUBLIC .
+
+ PUBLIC SECTION.
+
+ CLASS-METHODS bitbyte_to_int
+ IMPORTING
+ !iv_bits TYPE clike
+ RETURNING
+ VALUE(rv_int) TYPE i .
+ CLASS-METHODS x_to_bitbyte
+ IMPORTING
+ !iv_x TYPE x
+ RETURNING
+ VALUE(rv_bitbyte) TYPE zif_abapgit_definitions=>ty_bitbyte .
+ CLASS-METHODS string_to_xstring_utf8
+ IMPORTING
+ !iv_string TYPE string
+ RETURNING
+ VALUE(rv_xstring) TYPE xstring .
+ CLASS-METHODS xstring_to_string_utf8
+ IMPORTING
+ !iv_data TYPE xstring
+ RETURNING
+ VALUE(rv_string) TYPE string .
+ CLASS-METHODS xstring_to_int
+ IMPORTING
+ !iv_xstring TYPE xstring
+ RETURNING
+ VALUE(rv_i) TYPE i
+ RAISING
+ zcx_abapgit_exception .
+ CLASS-METHODS int_to_xstring4
+ IMPORTING
+ !iv_i TYPE i
+ RETURNING
+ VALUE(rv_xstring) TYPE xstring .
+ CLASS-METHODS split_string
+ IMPORTING
+ !iv_string TYPE string
+ RETURNING
+ VALUE(rt_lines) TYPE string_table .
+ENDCLASS.
+
+
+
+CLASS ZCL_ABAPGIT_CONVERT IMPLEMENTATION.
+
+
+ METHOD bitbyte_to_int.
+
+ DATA: lv_bits TYPE string.
+
+
+ lv_bits = iv_bits.
+
+ rv_int = 0.
+ WHILE strlen( lv_bits ) > 0.
+ rv_int = rv_int * 2.
+ IF lv_bits(1) = '1'.
+ rv_int = rv_int + 1.
+ ENDIF.
+ lv_bits = lv_bits+1.
+ ENDWHILE.
+
+ ENDMETHOD. "bitbyte_to_int
+
+
+ METHOD int_to_xstring4.
+* returns xstring of length 4 containing the integer value iv_i
+
+ DATA: lv_x TYPE x LENGTH 4.
+
+
+ lv_x = iv_i.
+ rv_xstring = lv_x.
+
+ ENDMETHOD. "int_to_xstring
+
+
+ METHOD split_string.
+
+ FIND FIRST OCCURRENCE OF cl_abap_char_utilities=>cr_lf IN iv_string.
+
+ " Convert string into table depending on separator type CR_LF vs. LF
+ IF sy-subrc = 0.
+ SPLIT iv_string AT cl_abap_char_utilities=>cr_lf INTO TABLE rt_lines.
+ ELSE.
+ SPLIT iv_string AT cl_abap_char_utilities=>newline INTO TABLE rt_lines.
+ ENDIF.
+
+ ENDMETHOD. "split_string
+
+
+ METHOD string_to_xstring_utf8.
+
+ DATA: lo_obj TYPE REF TO cl_abap_conv_out_ce.
+
+
+ TRY.
+ lo_obj = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' ).
+
+ lo_obj->convert( EXPORTING data = iv_string
+ IMPORTING buffer = rv_xstring ).
+
+ CATCH cx_parameter_invalid_range
+ cx_sy_codepage_converter_init
+ cx_sy_conversion_codepage
+ cx_parameter_invalid_type. "#EC NO_HANDLER
+ ENDTRY.
+
+ ENDMETHOD. "string_to_xstring_utf8
+
+
+ METHOD xstring_to_int.
+
+ DATA: lv_xstring TYPE xstring,
+ lv_x TYPE x.
+
+
+ lv_xstring = iv_xstring.
+ WHILE xstrlen( lv_xstring ) > 0.
+ lv_x = lv_xstring(1).
+ rv_i = rv_i * 256 + lv_x.
+ lv_xstring = lv_xstring+1.
+ ENDWHILE.
+
+ ENDMETHOD. "xstring_to_int
+
+
+ METHOD xstring_to_string_utf8.
+
+ DATA: lv_len TYPE i,
+ lo_obj TYPE REF TO cl_abap_conv_in_ce.
+
+
+ TRY.
+ lo_obj = cl_abap_conv_in_ce=>create(
+ input = iv_data
+ encoding = 'UTF-8' ).
+ lv_len = xstrlen( iv_data ).
+
+ lo_obj->read( EXPORTING n = lv_len
+ IMPORTING data = rv_string ).
+
+ CATCH cx_parameter_invalid_range
+ cx_sy_codepage_converter_init
+ cx_sy_conversion_codepage
+ cx_parameter_invalid_type. "#EC NO_HANDLER
+ ENDTRY.
+
+ ENDMETHOD. "xstring_to_string_utf8
+
+
+ METHOD x_to_bitbyte.
+
+ DATA: lv_b TYPE n.
+
+ CLEAR rv_bitbyte.
+
+ DO 8 TIMES.
+ GET BIT sy-index OF iv_x INTO lv_b.
+ CONCATENATE rv_bitbyte lv_b INTO rv_bitbyte.
+ ENDDO.
+
+ ENDMETHOD. "x_to_bitbyte
+ENDCLASS.
diff --git a/src/utils/zcl_abapgit_convert.clas.testclasses.abap b/src/utils/zcl_abapgit_convert.clas.testclasses.abap
new file mode 100644
index 000000000..09c2c7755
--- /dev/null
+++ b/src/utils/zcl_abapgit_convert.clas.testclasses.abap
@@ -0,0 +1,66 @@
+*----------------------------------------------------------------------*
+* CLASS ltcl_convert DEFINITION
+*----------------------------------------------------------------------*
+*
+*----------------------------------------------------------------------*
+CLASS ltcl_convert DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL.
+
+ PRIVATE SECTION.
+ METHODS convert_int FOR TESTING RAISING zcx_abapgit_exception.
+ METHODS split_string FOR TESTING.
+
+ENDCLASS. "ltcl_convert DEFINITION
+
+*----------------------------------------------------------------------*
+* CLASS ltcl_convert IMPLEMENTATION
+*----------------------------------------------------------------------*
+*
+*----------------------------------------------------------------------*
+CLASS ltcl_convert IMPLEMENTATION.
+
+ METHOD convert_int.
+
+ DATA: lv_xstring TYPE xstring,
+ lv_input TYPE i,
+ lv_result TYPE i.
+
+
+ DO 1000 TIMES.
+ lv_input = sy-index.
+ lv_xstring = zcl_abapgit_convert=>int_to_xstring4( lv_input ).
+ lv_result = zcl_abapgit_convert=>xstring_to_int( lv_xstring ).
+
+ cl_abap_unit_assert=>assert_equals(
+ exp = lv_input
+ act = lv_result ).
+ ENDDO.
+
+ ENDMETHOD. "convert_int
+
+ METHOD split_string.
+
+ DATA: lt_act TYPE string_table,
+ lt_exp TYPE string_table.
+
+ APPEND 'ABC' TO lt_exp.
+ APPEND '123' TO lt_exp.
+
+ " Case 1. String separated by CRLF
+ lt_act = zcl_abapgit_convert=>split_string( 'ABC' && cl_abap_char_utilities=>cr_lf && '123' ).
+
+ cl_abap_unit_assert=>assert_equals( exp = lt_exp
+ act = lt_act
+ msg = ' Error during string split: CRLF' ).
+
+ CLEAR: lt_act.
+
+ " Case 2. String separated by LF
+ lt_act = zcl_abapgit_convert=>split_string( 'ABC' && cl_abap_char_utilities=>newline && '123' ).
+
+ cl_abap_unit_assert=>assert_equals( exp = lt_exp
+ act = lt_act
+ msg = ' Error during string split: LF' ).
+
+ ENDMETHOD. "split_string.
+
+ENDCLASS. "ltcl_convert IMPLEMENTATION
diff --git a/src/utils/zcl_abapgit_convert.clas.xml b/src/utils/zcl_abapgit_convert.clas.xml
new file mode 100644
index 000000000..40d190dc6
--- /dev/null
+++ b/src/utils/zcl_abapgit_convert.clas.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+ ZCL_ABAPGIT_CONVERT
+ 1
+ E
+ Convert
+ 2
+ 1
+ X
+ X
+ X
+ X
+
+
+
+
diff --git a/src/zabapgit_dot_abapgit.prog.abap b/src/zabapgit_dot_abapgit.prog.abap
index 6c8e809a4..8a7080574 100644
--- a/src/zabapgit_dot_abapgit.prog.abap
+++ b/src/zabapgit_dot_abapgit.prog.abap
@@ -94,7 +94,7 @@ CLASS lcl_dot_abapgit IMPLEMENTATION.
ls_data TYPE ty_dot_abapgit.
- lv_xml = lcl_convert=>xstring_to_string_utf8( iv_xstr ).
+ lv_xml = zcl_abapgit_convert=>xstring_to_string_utf8( iv_xstr ).
ls_data = from_xml( lv_xml ).
@@ -110,7 +110,7 @@ CLASS lcl_dot_abapgit IMPLEMENTATION.
lv_xml = to_xml( ms_data ).
- rv_xstr = lcl_convert=>string_to_xstring_utf8( lv_xml ).
+ rv_xstr = zcl_abapgit_convert=>string_to_xstring_utf8( lv_xml ).
ENDMETHOD.
diff --git a/src/zabapgit_git.prog.abap b/src/zabapgit_git.prog.abap
index ab6a2a47a..c16f7efba 100644
--- a/src/zabapgit_git.prog.abap
+++ b/src/zabapgit_git.prog.abap
@@ -256,13 +256,13 @@ CLASS lcl_git_transport IMPLEMENTATION.
lv_cmd_pkt = lcl_git_utils=>pkt_string( lv_line ).
lv_buffer = lv_cmd_pkt && '0000'.
- lv_tmp = lcl_convert=>string_to_xstring_utf8( lv_buffer ).
+ lv_tmp = zcl_abapgit_convert=>string_to_xstring_utf8( lv_buffer ).
CONCATENATE lv_tmp iv_pack INTO lv_xstring IN BYTE MODE.
lv_xstring = lo_client->send_receive_close( lv_xstring ).
- lv_string = lcl_convert=>xstring_to_string_utf8( lv_xstring ).
+ lv_string = zcl_abapgit_convert=>xstring_to_string_utf8( lv_xstring ).
IF NOT lv_string CP '*unpack ok*'.
zcx_abapgit_exception=>raise( 'unpack not ok' ).
ELSEIF lv_string CP '*pre-receive hook declined*'.
@@ -368,7 +368,7 @@ CLASS lcl_git_transport IMPLEMENTATION.
&& '0009done' && zif_abapgit_definitions=>gc_newline.
lv_xstring = lo_client->send_receive_close(
- lcl_convert=>string_to_xstring_utf8( lv_buffer ) ).
+ zcl_abapgit_convert=>string_to_xstring_utf8( lv_buffer ) ).
parse( IMPORTING ev_pack = lv_pack
CHANGING cv_data = lv_xstring ).
@@ -494,19 +494,19 @@ CLASS lcl_git_pack IMPLEMENTATION.
lv_x = cv_data(1).
- lv_bitbyte = lcl_convert=>x_to_bitbyte( lv_x ).
+ lv_bitbyte = zcl_abapgit_convert=>x_to_bitbyte( lv_x ).
cv_data = cv_data+1.
lv_length_bits = lv_bitbyte+4.
WHILE lv_bitbyte(1) <> '0'.
lv_x = cv_data(1).
- lv_bitbyte = lcl_convert=>x_to_bitbyte( lv_x ).
+ lv_bitbyte = zcl_abapgit_convert=>x_to_bitbyte( lv_x ).
cv_data = cv_data+1.
CONCATENATE lv_bitbyte+1 lv_length_bits INTO lv_length_bits.
ENDWHILE.
- ev_length = lcl_convert=>bitbyte_to_int( lv_length_bits ).
+ ev_length = zcl_abapgit_convert=>bitbyte_to_int( lv_length_bits ).
ENDMETHOD. "get_length
@@ -530,7 +530,7 @@ CLASS lcl_git_pack IMPLEMENTATION.
ASSERT NOT -sha1 IS INITIAL.
CONCATENATE -chmod -name INTO lv_string SEPARATED BY space.
- lv_xstring = lcl_convert=>string_to_xstring_utf8( lv_string ).
+ lv_xstring = zcl_abapgit_convert=>string_to_xstring_utf8( lv_string ).
lv_hex20 = to_upper( -sha1 ).
CONCATENATE rv_data lv_xstring lc_null lv_hex20 INTO rv_data IN BYTE MODE.
@@ -582,7 +582,7 @@ CLASS lcl_git_pack IMPLEMENTATION.
CONCATENATE lv_string zif_abapgit_definitions=>gc_newline is_commit-body INTO lv_string.
- rv_data = lcl_convert=>string_to_xstring_utf8( lv_string ).
+ rv_data = zcl_abapgit_convert=>string_to_xstring_utf8( lv_string ).
ENDMETHOD. "encode_commit
@@ -592,7 +592,7 @@ CLASS lcl_git_pack IMPLEMENTATION.
lv_bitbyte TYPE zif_abapgit_definitions=>ty_bitbyte.
- lv_bitbyte = lcl_convert=>x_to_bitbyte( iv_x ).
+ lv_bitbyte = zcl_abapgit_convert=>x_to_bitbyte( iv_x ).
lv_char3 = lv_bitbyte+1.
CASE lv_char3.
@@ -623,7 +623,7 @@ CLASS lcl_git_pack IMPLEMENTATION.
FIELD-SYMBOLS: LIKE LINE OF lt_string.
- lv_string = lcl_convert=>xstring_to_string_utf8( iv_data ).
+ lv_string = zcl_abapgit_convert=>xstring_to_string_utf8( iv_data ).
SPLIT lv_string AT zif_abapgit_definitions=>gc_newline INTO TABLE lt_string.
@@ -683,13 +683,13 @@ CLASS lcl_git_pack IMPLEMENTATION.
DO.
lv_x = cv_delta(1).
cv_delta = cv_delta+1.
- lv_bitbyte = lcl_convert=>x_to_bitbyte( lv_x ).
+ lv_bitbyte = zcl_abapgit_convert=>x_to_bitbyte( lv_x ).
CONCATENATE lv_bitbyte+1 lv_bits INTO lv_bits.
IF lv_bitbyte(1) = '0'.
EXIT. " current loop
ENDIF.
ENDDO.
- ev_header = lcl_convert=>bitbyte_to_int( lv_bits ).
+ ev_header = zcl_abapgit_convert=>bitbyte_to_int( lv_bits ).
ENDMETHOD. "delta_header
@@ -851,7 +851,7 @@ CLASS lcl_git_pack IMPLEMENTATION.
lv_len = lv_cursor - lv_start.
lv_xstring = iv_data+lv_start(lv_len).
- lv_string = lcl_convert=>xstring_to_string_utf8( lv_xstring ).
+ lv_string = zcl_abapgit_convert=>xstring_to_string_utf8( lv_xstring ).
SPLIT lv_string AT space INTO lv_chmod lv_name.
lv_offset = lv_cursor + 1.
@@ -942,7 +942,7 @@ CLASS lcl_git_pack IMPLEMENTATION.
* number of objects
lv_xstring = lv_data(4).
- lv_objects = lcl_convert=>xstring_to_int( lv_xstring ).
+ lv_objects = zcl_abapgit_convert=>xstring_to_int( lv_xstring ).
lv_data = lv_data+4.
@@ -1050,7 +1050,7 @@ CLASS lcl_git_pack IMPLEMENTATION.
CONCATENATE rv_data c_version INTO rv_data IN BYTE MODE.
- lv_xstring = lcl_convert=>int_to_xstring4( lines( it_objects ) ).
+ lv_xstring = zcl_abapgit_convert=>int_to_xstring4( lines( it_objects ) ).
CONCATENATE rv_data lv_xstring INTO rv_data IN BYTE MODE.
lv_objects_total = lines( it_objects ).
diff --git a/src/zabapgit_http.prog.abap b/src/zabapgit_http.prog.abap
index e74024eda..c4475a7b7 100644
--- a/src/zabapgit_http.prog.abap
+++ b/src/zabapgit_http.prog.abap
@@ -347,7 +347,7 @@ CLASS lcl_http_digest IMPLEMENTATION.
lv_hash TYPE xstring.
- lv_xstr = lcl_convert=>string_to_xstring_utf8( iv_data ).
+ lv_xstr = zcl_abapgit_convert=>string_to_xstring_utf8( iv_data ).
CALL FUNCTION 'CALCULATE_HASH_FOR_RAW'
EXPORTING
diff --git a/src/zabapgit_news.prog.abap b/src/zabapgit_news.prog.abap
index 1ea754a70..44fc82597 100644
--- a/src/zabapgit_news.prog.abap
+++ b/src/zabapgit_news.prog.abap
@@ -151,8 +151,8 @@ CLASS lcl_news IMPLEMENTATION.
RETURN. " Internal format of program version is not correct -> abort parsing
ENDIF.
- lv_string = lcl_convert=>xstring_to_string_utf8( iv_rawdata ).
- lt_lines = lcl_convert=>split_string( lv_string ).
+ lv_string = zcl_abapgit_convert=>xstring_to_string_utf8( iv_rawdata ).
+ lt_lines = zcl_abapgit_convert=>split_string( lv_string ).
mt_log = parse( it_lines = lt_lines iv_current_version = mv_current_version ).
READ TABLE mt_log INTO ls_log_line INDEX 1.
diff --git a/src/zabapgit_object_wapa.prog.abap b/src/zabapgit_object_wapa.prog.abap
index 67945496d..8d01abfa5 100644
--- a/src/zabapgit_object_wapa.prog.abap
+++ b/src/zabapgit_object_wapa.prog.abap
@@ -413,7 +413,7 @@ CLASS lcl_object_wapa IMPLEMENTATION.
DATA: lv_string TYPE string.
- lv_string = lcl_convert=>xstring_to_string_utf8( iv_content ).
+ lv_string = zcl_abapgit_convert=>xstring_to_string_utf8( iv_content ).
SPLIT lv_string AT zif_abapgit_definitions=>gc_newline INTO TABLE rt_content.
@@ -438,7 +438,7 @@ CLASS lcl_object_wapa IMPLEMENTATION.
CONCATENATE LINES OF lt_content INTO lv_string SEPARATED BY zif_abapgit_definitions=>gc_newline RESPECTING BLANKS.
- rv_content = lcl_convert=>string_to_xstring_utf8( lv_string ).
+ rv_content = zcl_abapgit_convert=>string_to_xstring_utf8( lv_string ).
ENDMETHOD.
diff --git a/src/zabapgit_objects.prog.abap b/src/zabapgit_objects.prog.abap
index 23f08bf7c..e52ab17a5 100644
--- a/src/zabapgit_objects.prog.abap
+++ b/src/zabapgit_objects.prog.abap
@@ -347,7 +347,7 @@ CLASS lcl_objects_files IMPLEMENTATION.
read_file( EXPORTING iv_filename = lv_filename
IMPORTING ev_data = lv_data ).
- rv_string = lcl_convert=>xstring_to_string_utf8( lv_data ).
+ rv_string = zcl_abapgit_convert=>xstring_to_string_utf8( lv_data ).
ENDMETHOD. "read_string
@@ -369,7 +369,7 @@ CLASS lcl_objects_files IMPLEMENTATION.
RETURN.
ENDIF.
- lv_abap = lcl_convert=>xstring_to_string_utf8( lv_data ).
+ lv_abap = zcl_abapgit_convert=>xstring_to_string_utf8( lv_data ).
SPLIT lv_abap AT zif_abapgit_definitions=>gc_newline INTO TABLE rt_abap.
@@ -388,7 +388,7 @@ CLASS lcl_objects_files IMPLEMENTATION.
ls_file-path = '/'.
ls_file-filename = filename( iv_extra = iv_extra
iv_ext = 'abap' ). "#EC NOTEXT
- ls_file-data = lcl_convert=>string_to_xstring_utf8( lv_source ).
+ ls_file-data = zcl_abapgit_convert=>string_to_xstring_utf8( lv_source ).
APPEND ls_file TO mt_files.
@@ -402,7 +402,7 @@ CLASS lcl_objects_files IMPLEMENTATION.
ls_file-path = '/'.
ls_file-filename = filename( iv_extra = iv_extra
iv_ext = iv_ext ). "#EC NOTEXT
- ls_file-data = lcl_convert=>string_to_xstring_utf8( iv_string ).
+ ls_file-data = zcl_abapgit_convert=>string_to_xstring_utf8( iv_string ).
APPEND ls_file TO mt_files.
@@ -427,7 +427,7 @@ CLASS lcl_objects_files IMPLEMENTATION.
WITH ''.
ASSERT sy-subrc = 0.
- ls_file-data = lcl_convert=>string_to_xstring_utf8( lv_xml ).
+ ls_file-data = zcl_abapgit_convert=>string_to_xstring_utf8( lv_xml ).
APPEND ls_file TO mt_files.
@@ -445,7 +445,7 @@ CLASS lcl_objects_files IMPLEMENTATION.
read_file( EXPORTING iv_filename = lv_filename
IMPORTING ev_data = lv_data ).
- lv_xml = lcl_convert=>xstring_to_string_utf8( lv_data ).
+ lv_xml = zcl_abapgit_convert=>xstring_to_string_utf8( lv_data ).
CREATE OBJECT ro_xml
EXPORTING
diff --git a/src/zabapgit_objects_impl.prog.abap b/src/zabapgit_objects_impl.prog.abap
index f3edd33a8..aa0d8ea36 100644
--- a/src/zabapgit_objects_impl.prog.abap
+++ b/src/zabapgit_objects_impl.prog.abap
@@ -590,7 +590,7 @@ CLASS lcl_objects IMPLEMENTATION.
IF sy-subrc = 0.
CREATE OBJECT lo_remote_version
EXPORTING
- iv_xml = lcl_convert=>xstring_to_string_utf8( ls_remote_file-data ).
+ iv_xml = zcl_abapgit_convert=>xstring_to_string_utf8( ls_remote_file-data ).
lo_comparison_result = io_object->compare_to_remote_version( lo_remote_version ).
lo_comparison_result->show_confirmation_dialog( ).
diff --git a/src/zabapgit_tadir.prog.abap b/src/zabapgit_tadir.prog.abap
index a95e1770c..66b48ad3c 100644
--- a/src/zabapgit_tadir.prog.abap
+++ b/src/zabapgit_tadir.prog.abap
@@ -170,7 +170,7 @@ CLASS lcl_tadir IMPLEMENTATION.
no_authority = 4
OTHERS = 5 ).
IF sy-subrc = 0.
- rv_hash = lcl_hash=>sha1_raw( lcl_convert=>string_to_xstring_utf8( lv_url ) ).
+ rv_hash = lcl_hash=>sha1_raw( zcl_abapgit_convert=>string_to_xstring_utf8( lv_url ) ).
ENDIF.
ENDMETHOD.
diff --git a/src/zabapgit_unit_test.prog.abap b/src/zabapgit_unit_test.prog.abap
index 7d2a1b935..fc7bd5cb0 100644
--- a/src/zabapgit_unit_test.prog.abap
+++ b/src/zabapgit_unit_test.prog.abap
@@ -41,72 +41,6 @@ END-OF-DEFINITION.
* todo, should the tests be in the same include as the classes
* they are testing?
-*----------------------------------------------------------------------*
-* CLASS ltcl_convert DEFINITION
-*----------------------------------------------------------------------*
-*
-*----------------------------------------------------------------------*
-CLASS ltcl_convert DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL.
-
- PRIVATE SECTION.
- METHODS convert_int FOR TESTING RAISING zcx_abapgit_exception.
- METHODS split_string FOR TESTING.
-
-ENDCLASS. "ltcl_convert DEFINITION
-
-*----------------------------------------------------------------------*
-* CLASS ltcl_convert IMPLEMENTATION
-*----------------------------------------------------------------------*
-*
-*----------------------------------------------------------------------*
-CLASS ltcl_convert IMPLEMENTATION.
-
- METHOD convert_int.
-
- DATA: lv_xstring TYPE xstring,
- lv_input TYPE i,
- lv_result TYPE i.
-
-
- DO 1000 TIMES.
- lv_input = sy-index.
- lv_xstring = lcl_convert=>int_to_xstring4( lv_input ).
- lv_result = lcl_convert=>xstring_to_int( lv_xstring ).
-
- cl_abap_unit_assert=>assert_equals(
- exp = lv_input
- act = lv_result ).
- ENDDO.
-
- ENDMETHOD. "convert_int
-
- METHOD split_string.
-
- DATA: lt_act TYPE string_table,
- lt_exp TYPE string_table.
-
- APPEND 'ABC' TO lt_exp.
- APPEND '123' TO lt_exp.
-
- " Case 1. String separated by CRLF
- lt_act = lcl_convert=>split_string( 'ABC' && cl_abap_char_utilities=>cr_lf && '123' ).
-
- cl_abap_unit_assert=>assert_equals( exp = lt_exp
- act = lt_act
- msg = ' Error during string split: CRLF' ).
-
- CLEAR: lt_act.
-
- " Case 2. String separated by LF
- lt_act = lcl_convert=>split_string( 'ABC' && cl_abap_char_utilities=>newline && '123' ).
-
- cl_abap_unit_assert=>assert_equals( exp = lt_exp
- act = lt_act
- msg = ' Error during string split: LF' ).
-
- ENDMETHOD. "split_string.
-
-ENDCLASS. "ltcl_convert IMPLEMENTATION
CLASS ltcl_critical_tests DEFINITION FINAL FOR TESTING.
PUBLIC SECTION.
@@ -298,8 +232,8 @@ CLASS ltcl_diff IMPLEMENTATION.
CONCATENATE LINES OF mt_new INTO lv_new SEPARATED BY zif_abapgit_definitions=>gc_newline.
CONCATENATE LINES OF mt_old INTO lv_old SEPARATED BY zif_abapgit_definitions=>gc_newline.
- lv_xnew = lcl_convert=>string_to_xstring_utf8( lv_new ).
- lv_xold = lcl_convert=>string_to_xstring_utf8( lv_old ).
+ lv_xnew = zcl_abapgit_convert=>string_to_xstring_utf8( lv_new ).
+ lv_xold = zcl_abapgit_convert=>string_to_xstring_utf8( lv_old ).
CREATE OBJECT lo_diff
EXPORTING
@@ -977,7 +911,7 @@ CLASS ltcl_git_pack_decode_commit IMPLEMENTATION.
DATA: lv_xstr TYPE xstring.
- lv_xstr = lcl_convert=>string_to_xstring_utf8( mv_str ).
+ lv_xstr = zcl_abapgit_convert=>string_to_xstring_utf8( mv_str ).
ms_raw = lcl_git_pack=>decode_commit( lv_xstr ).
diff --git a/src/zabapgit_util.prog.abap b/src/zabapgit_util.prog.abap
index 2ccea827c..2609aaa47 100644
--- a/src/zabapgit_util.prog.abap
+++ b/src/zabapgit_util.prog.abap
@@ -79,166 +79,6 @@ CLASS lcl_state IMPLEMENTATION.
ENDCLASS.
-*----------------------------------------------------------------------*
-* CLASS lcl_convert DEFINITION
-*----------------------------------------------------------------------*
-*
-*----------------------------------------------------------------------*
-CLASS lcl_convert DEFINITION FINAL.
-
- PUBLIC SECTION.
- CLASS-METHODS bitbyte_to_int
- IMPORTING iv_bits TYPE clike
- RETURNING VALUE(rv_int) TYPE i.
-
- CLASS-METHODS x_to_bitbyte
- IMPORTING iv_x TYPE x
- RETURNING VALUE(rv_bitbyte) TYPE zif_abapgit_definitions=>ty_bitbyte.
-
- CLASS-METHODS string_to_xstring_utf8
- IMPORTING iv_string TYPE string
- RETURNING VALUE(rv_xstring) TYPE xstring.
-
- CLASS-METHODS xstring_to_string_utf8
- IMPORTING iv_data TYPE xstring
- RETURNING VALUE(rv_string) TYPE string.
-
- CLASS-METHODS xstring_to_int
- IMPORTING iv_xstring TYPE xstring
- RETURNING VALUE(rv_i) TYPE i
- RAISING zcx_abapgit_exception.
-
- CLASS-METHODS int_to_xstring4
- IMPORTING iv_i TYPE i
- RETURNING VALUE(rv_xstring) TYPE xstring.
-
- CLASS-METHODS split_string
- IMPORTING iv_string TYPE string
- RETURNING VALUE(rt_lines) TYPE string_table.
-
-ENDCLASS. "lcl_convert DEFINITION
-
-*----------------------------------------------------------------------*
-* CLASS lcl_convert IMPLEMENTATION
-*----------------------------------------------------------------------*
-*
-*----------------------------------------------------------------------*
-CLASS lcl_convert IMPLEMENTATION.
-
- METHOD int_to_xstring4.
-* returns xstring of length 4 containing the integer value iv_i
-
- DATA: lv_x TYPE x LENGTH 4.
-
-
- lv_x = iv_i.
- rv_xstring = lv_x.
-
- ENDMETHOD. "int_to_xstring
-
- METHOD xstring_to_int.
-
- DATA: lv_xstring TYPE xstring,
- lv_x TYPE x.
-
-
- lv_xstring = iv_xstring.
- WHILE xstrlen( lv_xstring ) > 0.
- lv_x = lv_xstring(1).
- rv_i = rv_i * 256 + lv_x.
- lv_xstring = lv_xstring+1.
- ENDWHILE.
-
- ENDMETHOD. "xstring_to_int
-
- METHOD xstring_to_string_utf8.
-
- DATA: lv_len TYPE i,
- lo_obj TYPE REF TO cl_abap_conv_in_ce.
-
-
- TRY.
- lo_obj = cl_abap_conv_in_ce=>create(
- input = iv_data
- encoding = 'UTF-8' ).
- lv_len = xstrlen( iv_data ).
-
- lo_obj->read( EXPORTING n = lv_len
- IMPORTING data = rv_string ).
-
- CATCH cx_parameter_invalid_range
- cx_sy_codepage_converter_init
- cx_sy_conversion_codepage
- cx_parameter_invalid_type. "#EC NO_HANDLER
- ENDTRY.
-
- ENDMETHOD. "xstring_to_string_utf8
-
- METHOD string_to_xstring_utf8.
-
- DATA: lo_obj TYPE REF TO cl_abap_conv_out_ce.
-
-
- TRY.
- lo_obj = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' ).
-
- lo_obj->convert( EXPORTING data = iv_string
- IMPORTING buffer = rv_xstring ).
-
- CATCH cx_parameter_invalid_range
- cx_sy_codepage_converter_init
- cx_sy_conversion_codepage
- cx_parameter_invalid_type. "#EC NO_HANDLER
- ENDTRY.
-
- ENDMETHOD. "string_to_xstring_utf8
-
- METHOD bitbyte_to_int.
-
- DATA: lv_bits TYPE string.
-
-
- lv_bits = iv_bits.
-
- rv_int = 0.
- WHILE strlen( lv_bits ) > 0.
- rv_int = rv_int * 2.
- IF lv_bits(1) = '1'.
- rv_int = rv_int + 1.
- ENDIF.
- lv_bits = lv_bits+1.
- ENDWHILE.
-
- ENDMETHOD. "bitbyte_to_int
-
- METHOD x_to_bitbyte.
-
- DATA: lv_b TYPE n.
-
- CLEAR rv_bitbyte.
-
- DO 8 TIMES.
- GET BIT sy-index OF iv_x INTO lv_b.
- CONCATENATE rv_bitbyte lv_b INTO rv_bitbyte.
- ENDDO.
-
- ENDMETHOD. "x_to_bitbyte
-
- METHOD split_string.
-
- FIND FIRST OCCURRENCE OF cl_abap_char_utilities=>cr_lf IN iv_string.
-
- " Convert string into table depending on separator type CR_LF vs. LF
- IF sy-subrc = 0.
- SPLIT iv_string AT cl_abap_char_utilities=>cr_lf INTO TABLE rt_lines.
- ELSE.
- SPLIT iv_string AT cl_abap_char_utilities=>newline INTO TABLE rt_lines.
- ENDIF.
-
- ENDMETHOD. "split_string
-
-ENDCLASS. "lcl_convert IMPLEMENTATION
-
*----------------------------------------------------------------------*
* CLASS lcl_hash DEFINITION
*----------------------------------------------------------------------*
@@ -355,7 +195,7 @@ CLASS lcl_hash IMPLEMENTATION.
lv_char10 = lv_len.
CONDENSE lv_char10.
CONCATENATE iv_type lv_char10 INTO lv_string SEPARATED BY space.
- lv_xstring = lcl_convert=>string_to_xstring_utf8( lv_string ).
+ lv_xstring = zcl_abapgit_convert=>string_to_xstring_utf8( lv_string ).
lv_string = lv_xstring.
CONCATENATE lv_string '00' INTO lv_string.
@@ -584,8 +424,8 @@ CLASS lcl_diff IMPLEMENTATION.
lv_old TYPE string.
- lv_new = lcl_convert=>xstring_to_string_utf8( iv_new ).
- lv_old = lcl_convert=>xstring_to_string_utf8( iv_old ).
+ lv_new = zcl_abapgit_convert=>xstring_to_string_utf8( iv_new ).
+ lv_old = zcl_abapgit_convert=>xstring_to_string_utf8( iv_old ).
SPLIT lv_new AT zif_abapgit_definitions=>gc_newline INTO TABLE et_new.
SPLIT lv_old AT zif_abapgit_definitions=>gc_newline INTO TABLE et_old.