Merge branch 'main' into fix-bind_no_filter

This commit is contained in:
Domi Bigl 2023-04-09 10:31:33 +02:00 committed by GitHub
commit 29d18c3241
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 85 additions and 5 deletions

View File

@ -19,15 +19,18 @@ CLASS zcl_excel_theme_fmt_scheme DEFINITION
METHODS get_default_fmt METHODS get_default_fmt
RETURNING RETURNING
VALUE(rv_string) TYPE string . VALUE(rv_string) TYPE string .
METHODS parse_string
IMPORTING iv_string TYPE string
RETURNING VALUE(ri_node) TYPE REF TO if_ixml_node.
ENDCLASS. ENDCLASS.
CLASS zcl_excel_theme_fmt_scheme IMPLEMENTATION. CLASS ZCL_EXCEL_THEME_FMT_SCHEME IMPLEMENTATION.
METHOD build_xml. METHOD build_xml.
DATA: lo_xml TYPE REF TO cl_xml_document.
DATA: lo_node TYPE REF TO if_ixml_node. DATA: lo_node TYPE REF TO if_ixml_node.
DATA: lo_elements TYPE REF TO if_ixml_element. DATA: lo_elements TYPE REF TO if_ixml_element.
CHECK io_document IS BOUND. CHECK io_document IS BOUND.
@ -35,9 +38,7 @@ CLASS zcl_excel_theme_fmt_scheme IMPLEMENTATION.
IF lo_elements IS BOUND. IF lo_elements IS BOUND.
IF fmt_scheme IS INITIAL. IF fmt_scheme IS INITIAL.
CREATE OBJECT lo_xml. lo_node = parse_string( get_default_fmt( ) ).
lo_xml->parse_string( get_default_fmt( ) ).
lo_node = lo_xml->get_first_node( ).
lo_elements->append_child( new_child = lo_node ). lo_elements->append_child( new_child = lo_node ).
ELSE. ELSE.
lo_elements->append_child( new_child = fmt_scheme ). lo_elements->append_child( new_child = fmt_scheme ).
@ -191,4 +192,28 @@ CLASS zcl_excel_theme_fmt_scheme IMPLEMENTATION.
METHOD load. METHOD load.
fmt_scheme = zcl_excel_common=>clone_ixml_with_namespaces( io_fmt_scheme ). fmt_scheme = zcl_excel_common=>clone_ixml_with_namespaces( io_fmt_scheme ).
ENDMETHOD. "load ENDMETHOD. "load
METHOD parse_string.
DATA li_stream TYPE REF TO if_ixml_istream.
DATA li_ixml TYPE REF TO if_ixml.
DATA li_document TYPE REF TO if_ixml_document.
DATA li_factory TYPE REF TO if_ixml_stream_factory.
DATA li_parser TYPE REF TO if_ixml_parser.
DATA li_istream TYPE REF TO if_ixml_istream.
li_ixml = cl_ixml=>create( ).
li_document = li_ixml->create_document( ).
li_factory = li_ixml->create_stream_factory( ).
li_istream = li_factory->create_istream_string( iv_string ).
li_parser = li_ixml->create_parser(
stream_factory = li_factory
istream = li_istream
document = li_document ).
li_parser->add_strip_space_element( ).
li_parser->parse( ).
li_istream->close( ).
ri_node = li_document->get_first_child( ).
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -0,0 +1,54 @@
CLASS ltcl_test DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS build_xml FOR TESTING.
DATA mi_ixml TYPE REF TO if_ixml.
DATA mi_document TYPE REF TO if_ixml_document.
METHODS setup.
METHODS render
RETURNING
VALUE(rv_xml) TYPE string.
ENDCLASS.
CLASS ltcl_test IMPLEMENTATION.
METHOD setup.
mi_ixml = cl_ixml=>create( ).
mi_document = mi_ixml->create_document( ).
ENDMETHOD.
METHOD render.
DATA li_ostream TYPE REF TO if_ixml_ostream.
DATA li_renderer TYPE REF TO if_ixml_renderer.
DATA li_factory TYPE REF TO if_ixml_stream_factory.
li_factory = mi_ixml->create_stream_factory( ).
li_ostream = li_factory->create_ostream_cstring( rv_xml ).
li_renderer = mi_ixml->create_renderer(
ostream = li_ostream
document = mi_document ).
li_renderer->render( ).
ENDMETHOD.
METHOD build_xml.
DATA lo_theme_fmt TYPE REF TO zcl_excel_theme_fmt_scheme.
DATA li_ixml TYPE REF TO if_ixml.
DATA li_document TYPE REF TO if_ixml_document.
DATA lv_xml TYPE string.
mi_document->create_simple_element(
name = zcl_excel_theme=>c_theme_elements
parent = mi_document ).
CREATE OBJECT lo_theme_fmt.
lo_theme_fmt->build_xml( mi_document ).
lv_xml = render( ).
cl_abap_unit_assert=>assert_char_cp(
act = lv_xml
exp = '*<a:fmtScheme name="Office">*' ).
ENDMETHOD.
ENDCLASS.

View File

@ -10,6 +10,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>