Merge pull request #1433 from christianguenter2/1431

Fix XSLT diff, 1431
This commit is contained in:
Lars Hvam 2018-06-02 12:00:13 +02:00 committed by GitHub
commit c02e6533c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 83 additions and 11 deletions

View File

@ -19,7 +19,25 @@ CLASS zcl_abapgit_object_xslt IMPLEMENTATION.
ENDMETHOD. "zif_abapgit_object~has_changed_since ENDMETHOD. "zif_abapgit_object~has_changed_since
METHOD zif_abapgit_object~changed_by. METHOD zif_abapgit_object~changed_by.
rv_user = c_user_unknown. " todo
DATA: lo_xslt TYPE REF TO cl_o2_api_xsltdesc,
ls_attributes TYPE o2xsltattr.
lo_xslt = get( ).
lo_xslt->get_attributes(
RECEIVING
p_attributes = ls_attributes
EXCEPTIONS
object_invalid = 1
xsltdesc_deleted = 2
OTHERS = 3 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
rv_user = ls_attributes-changedby.
ENDMETHOD. ENDMETHOD.
METHOD get. METHOD get.

View File

@ -5,27 +5,26 @@ CLASS zcl_abapgit_syntax_xml DEFINITION
PUBLIC SECTION. PUBLIC SECTION.
METHODS constructor.
CONSTANTS: CONSTANTS:
BEGIN OF c_css, BEGIN OF c_css,
xml_tag TYPE string VALUE 'xml_tag', "#EC NOTEXT xml_tag TYPE string VALUE 'xml_tag', "#EC NOTEXT
attr TYPE string VALUE 'attr', "#EC NOTEXT attr TYPE string VALUE 'attr', "#EC NOTEXT
attr_val TYPE string VALUE 'attr_val', "#EC NOTEXT attr_val TYPE string VALUE 'attr_val', "#EC NOTEXT
END OF c_css, END OF c_css .
CONSTANTS:
BEGIN OF c_token, BEGIN OF c_token,
xml_tag TYPE c VALUE 'X', "#EC NOTEXT xml_tag TYPE c VALUE 'X', "#EC NOTEXT
attr TYPE c VALUE 'A', "#EC NOTEXT attr TYPE c VALUE 'A', "#EC NOTEXT
attr_val TYPE c VALUE 'V', "#EC NOTEXT attr_val TYPE c VALUE 'V', "#EC NOTEXT
END OF c_token, END OF c_token .
CONSTANTS:
BEGIN OF c_regex, BEGIN OF c_regex,
xml_tag TYPE string VALUE '[<>]', "#EC NOTEXT xml_tag TYPE string VALUE '[<>]', "#EC NOTEXT
attr TYPE string VALUE '\s[-a-z:_0-9]+\s*(?==)', "#EC NOTEXT attr TYPE string VALUE '\s[-a-z:_0-9]+\s*(?==)', "#EC NOTEXT
attr_val TYPE string VALUE '["''][^''"]+[''"]', "#EC NOTEXT attr_val TYPE string VALUE '["''][^''"]+[''"]', "#EC NOTEXT
END OF c_regex. END OF c_regex .
METHODS constructor .
PROTECTED SECTION. PROTECTED SECTION.
METHODS order_matches REDEFINITION. METHODS order_matches REDEFINITION.
@ -34,7 +33,7 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_SYNTAX_XML IMPLEMENTATION. CLASS zcl_abapgit_syntax_xml IMPLEMENTATION.
METHOD constructor. METHOD constructor.
@ -91,8 +90,10 @@ CLASS ZCL_ABAPGIT_SYNTAX_XML IMPLEMENTATION.
" Adjust length and offset of closing tag " Adjust length and offset of closing tag
ELSEIF <ls_match>-text_tag = '>' AND lv_prev_token <> c_token-xml_tag. ELSEIF <ls_match>-text_tag = '>' AND lv_prev_token <> c_token-xml_tag.
lv_state = 'C'. lv_state = 'C'.
<ls_match>-length = <ls_match>-offset - <ls_prev>-offset - <ls_prev>-length + <ls_match>-length. IF <ls_prev> IS ASSIGNED.
<ls_match>-offset = <ls_prev>-offset + <ls_prev>-length. <ls_match>-length = <ls_match>-offset - <ls_prev>-offset - <ls_prev>-length + <ls_match>-length.
<ls_match>-offset = <ls_prev>-offset + <ls_prev>-length.
ENDIF.
ELSE. ELSE.
lv_state = 'O'. lv_state = 'O'.
ENDIF. ENDIF.

View File

@ -0,0 +1,52 @@
*"* use this source file for your ABAP unit test classes
CLASS abapgit_syntax_xml DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PRIVATE SECTION.
DATA:
mo_cut TYPE REF TO zcl_abapgit_syntax_xml.
METHODS:
setup,
sole_closing_xml_tag FOR TESTING RAISING cx_static_check,
complete_xml_tag FOR TESTING RAISING cx_static_check,
complete_xml_tag_with_closing FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS abapgit_syntax_xml IMPLEMENTATION.
METHOD setup.
CREATE OBJECT mo_cut.
ENDMETHOD.
METHOD sole_closing_xml_tag.
cl_abap_unit_assert=>assert_equals(
exp = |<span class="xml_tag">&gt;</span>|
act = mo_cut->process_line( |>| ) ).
ENDMETHOD.
METHOD complete_xml_tag.
cl_abap_unit_assert=>assert_equals(
exp = |<span class="xml_tag">&lt;tag&gt;</span>|
act = mo_cut->process_line( |<tag>| ) ).
ENDMETHOD.
METHOD complete_xml_tag_with_closing.
cl_abap_unit_assert=>assert_equals(
exp = |<span class="xml_tag">&lt;tag/&gt;</span>|
act = mo_cut->process_line( |<tag/>| ) ).
ENDMETHOD.
ENDCLASS.

View File

@ -12,6 +12,7 @@
<CLSCCINCL>X</CLSCCINCL> <CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT> <FIXPT>X</FIXPT>
<UNICODE>X</UNICODE> <UNICODE>X</UNICODE>
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
</VSEOCLASS> </VSEOCLASS>
</asx:values> </asx:values>
</asx:abap> </asx:abap>