SSFO fixes for leading spaces #2640

This commit is contained in:
larshp 2019-04-22 09:37:03 +00:00 committed by Lars Hvam
parent 2b7bb5da38
commit 3084bb2c60

View File

@ -165,12 +165,15 @@ CLASS ZCL_ABAPGIT_OBJECT_SSFO IMPLEMENTATION.
IMPORTING ei_code_item_element = li_element IMPORTING ei_code_item_element = li_element
CHANGING cv_within_code_section = cv_within_code_section ). CHANGING cv_within_code_section = cv_within_code_section ).
* for downwards compatibility, this code can be removed sometime in the future
lv_leading_spaces = li_element->get_attribute_ns( lv_leading_spaces = li_element->get_attribute_ns(
name = zcl_abapgit_object_ssfo=>attrib_abapgit_leadig_spaces ). name = zcl_abapgit_object_ssfo=>attrib_abapgit_leadig_spaces ).
lv_coding_line = li_element->get_value( ). lv_coding_line = li_element->get_value( ).
IF strlen( lv_coding_line ) >= 1 AND lv_coding_line(1) <> | |.
SHIFT lv_coding_line RIGHT BY lv_leading_spaces PLACES. SHIFT lv_coding_line RIGHT BY lv_leading_spaces PLACES.
li_element->set_value( lv_coding_line ). li_element->set_value( lv_coding_line ).
ENDIF.
CATCH zcx_abapgit_exception ##no_handler. CATCH zcx_abapgit_exception ##no_handler.
ENDTRY. ENDTRY.
@ -179,30 +182,30 @@ CLASS ZCL_ABAPGIT_OBJECT_SSFO IMPLEMENTATION.
METHOD set_attribute_leading_spaces. METHOD set_attribute_leading_spaces.
DATA: li_element TYPE REF TO if_ixml_element. * DATA: li_element TYPE REF TO if_ixml_element.
DATA: lv_code_line TYPE string. * DATA: lv_code_line TYPE string.
DATA: lv_offset TYPE i. * DATA: lv_offset TYPE i.
*
TRY. * TRY.
code_item_section_handling( EXPORTING iv_name = iv_name * code_item_section_handling( EXPORTING iv_name = iv_name
ii_node = ii_node * ii_node = ii_node
IMPORTING ei_code_item_element = li_element * IMPORTING ei_code_item_element = li_element
CHANGING cv_within_code_section = cv_within_code_section ). * CHANGING cv_within_code_section = cv_within_code_section ).
*
lv_code_line = ii_node->get_value( ). * lv_code_line = ii_node->get_value( ).
"find 1st non space char * "find 1st non space char
FIND FIRST OCCURRENCE OF REGEX '\S' IN lv_code_line MATCH OFFSET lv_offset. * FIND FIRST OCCURRENCE OF REGEX '\S' IN lv_code_line MATCH OFFSET lv_offset.
IF sy-subrc = 0 AND lv_offset > 0. * IF sy-subrc = 0 AND lv_offset > 0.
TRY. * TRY.
li_element ?= ii_node. * li_element ?= ii_node.
li_element->set_attribute( name = zcl_abapgit_object_ssfo=>attrib_abapgit_leadig_spaces * li_element->set_attribute( name = zcl_abapgit_object_ssfo=>attrib_abapgit_leadig_spaces
value = |{ lv_offset }| ). * value = |{ lv_offset }| ).
*
CATCH cx_sy_move_cast_error ##no_handler. * CATCH cx_sy_move_cast_error ##no_handler.
ENDTRY. * ENDTRY.
ENDIF. * ENDIF.
CATCH zcx_abapgit_exception ##no_handler. * CATCH zcx_abapgit_exception ##no_handler.
ENDTRY. * ENDTRY.
ENDMETHOD. ENDMETHOD.