diff --git a/src/objects/texts/zif_abapgit_lang_definitions.intf.abap b/src/objects/texts/zif_abapgit_lang_definitions.intf.abap index b6d5245e2..cc2e6f97a 100644 --- a/src/objects/texts/zif_abapgit_lang_definitions.intf.abap +++ b/src/objects/texts/zif_abapgit_lang_definitions.intf.abap @@ -11,7 +11,7 @@ INTERFACE zif_abapgit_lang_definitions language TYPE langu, lines TYPE tlinetab, END OF ty_i18n_line, - ty_i18n_lines TYPE STANDARD TABLE OF ty_i18n_line. + ty_i18n_lines TYPE STANDARD TABLE OF ty_i18n_line WITH KEY language. TYPES: ty_langus TYPE STANDARD TABLE OF langu. diff --git a/src/objects/zcl_abapgit_object_intf.clas.abap b/src/objects/zcl_abapgit_object_intf.clas.abap index 7c3081d61..ebdf60fe6 100644 --- a/src/objects/zcl_abapgit_object_intf.clas.abap +++ b/src/objects/zcl_abapgit_object_intf.clas.abap @@ -2,6 +2,19 @@ CLASS zcl_abapgit_object_intf DEFINITION PUBLIC FINAL INHERITING FROM zcl_abapgi PUBLIC SECTION. INTERFACES zif_abapgit_object. + TYPES: + BEGIN OF ty_docu, + lines TYPE tlinetab, + i18n_lines TYPE zif_abapgit_lang_definitions=>ty_i18n_lines, + END OF ty_docu. + + TYPES: + BEGIN OF ty_intf, + vseointerf TYPE vseointerf, + docu TYPE ty_docu, + description TYPE zif_abapgit_oo_object_fnc=>ty_seocompotx_tt, + END OF ty_intf. + METHODS constructor IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item @@ -26,17 +39,19 @@ CLASS zcl_abapgit_object_intf DEFINITION PUBLIC FINAL INHERITING FROM zcl_abapgi zcx_abapgit_exception . METHODS serialize_docu IMPORTING - !ii_xml TYPE REF TO zif_abapgit_xml_output - !it_langu_additional TYPE zif_abapgit_lang_definitions=>ty_langus OPTIONAL - !iv_clsname TYPE seoclsname + !ii_xml TYPE REF TO zif_abapgit_xml_output + !it_langu_additional TYPE zif_abapgit_lang_definitions=>ty_langus OPTIONAL + !iv_clsname TYPE seoclsname + RETURNING VALUE(rs_docu) TYPE ty_docu RAISING - zcx_abapgit_exception. + zcx_abapgit_exception. METHODS serialize_descr IMPORTING - !ii_xml TYPE REF TO zif_abapgit_xml_output - !iv_clsname TYPE seoclsname + !ii_xml TYPE REF TO zif_abapgit_xml_output + !iv_clsname TYPE seoclsname + RETURNING VALUE(rs_description) TYPE ty_intf-description RAISING - zcx_abapgit_exception. + zcx_abapgit_exception. PRIVATE SECTION. DATA mi_object_oriented_object_fct TYPE REF TO zif_abapgit_oo_object_fnc . @@ -223,8 +238,7 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION. RETURN. ENDIF. - ii_xml->add( iv_name = 'DESCRIPTIONS' - ig_data = lt_descriptions ). + rs_description = lt_descriptions. ENDMETHOD. @@ -243,10 +257,8 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION. iv_id = 'IF' iv_object_name = lv_object iv_language = mv_language ). - IF lines( lt_lines ) > 0. - ii_xml->add( iv_name = 'LINES' - ig_data = lt_lines ). - ENDIF. + + rs_docu-lines = lt_lines. IF ii_xml->i18n_params( )-main_language_only = abap_true. RETURN. @@ -268,10 +280,7 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION. ENDLOOP. - IF lines( lt_i18n_lines ) > 0. - ii_xml->add( iv_name = 'I18N_LINES' - ig_data = lt_i18n_lines ). - ENDIF. + rs_docu-i18n_lines = lt_i18n_lines. ENDMETHOD. @@ -279,26 +288,23 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION. METHOD serialize_xml. DATA: - ls_vseointerf TYPE vseointerf, + ls_intf TYPE ty_intf, ls_clskey TYPE seoclskey, lt_langu_additional TYPE zif_abapgit_lang_definitions=>ty_langus. ls_clskey-clsname = ms_item-obj_name. - ls_vseointerf = mi_object_oriented_object_fct->get_interface_properties( ls_clskey ). + ls_intf-vseointerf = mi_object_oriented_object_fct->get_interface_properties( ls_clskey ). - CLEAR: ls_vseointerf-uuid, - ls_vseointerf-author, - ls_vseointerf-createdon, - ls_vseointerf-changedby, - ls_vseointerf-changedon, - ls_vseointerf-chgdanyby, - ls_vseointerf-chgdanyon, - ls_vseointerf-r3release, - ls_vseointerf-version. - - io_xml->add( iv_name = 'VSEOINTERF' - ig_data = ls_vseointerf ). + CLEAR: ls_intf-vseointerf-uuid, + ls_intf-vseointerf-author, + ls_intf-vseointerf-createdon, + ls_intf-vseointerf-changedby, + ls_intf-vseointerf-changedon, + ls_intf-vseointerf-chgdanyby, + ls_intf-vseointerf-chgdanyon, + ls_intf-vseointerf-r3release, + ls_intf-vseointerf-version. " Select all active translations of documentation " Skip main language - it was already serialized @@ -309,12 +315,23 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION. AND object = ls_clskey-clsname AND langu <> mv_language. - serialize_docu( ii_xml = io_xml + ls_intf-docu = serialize_docu( + ii_xml = io_xml iv_clsname = ls_clskey-clsname it_langu_additional = lt_langu_additional ). - serialize_descr( ii_xml = io_xml - iv_clsname = ls_clskey-clsname ). + ls_intf-description = serialize_descr( ii_xml = io_xml + iv_clsname = ls_clskey-clsname ). + + " HERE: switch with feature flag for XML or JSON file format + io_xml->add( iv_name = 'VSEOINTERF' + ig_data = ls_intf-vseointerf ). + io_xml->add( iv_name = 'DESCRIPTIONS' + ig_data = ls_intf-description ). + io_xml->add( iv_name = 'LINES' + ig_data = ls_intf-docu-lines ). + io_xml->add( iv_name = 'I18N_LINES' + ig_data = ls_intf-docu-i18n_lines ). ENDMETHOD.