mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 11:46:38 +08:00
Refactor: Translations for AFF (#6904)
This commit is contained in:
parent
3acb94ef05
commit
993466a1c9
|
@ -51,7 +51,7 @@ CLASS zcl_abapgit_json_handler DEFINITION
|
|||
"! @parameter ev_data | data of the xstring
|
||||
METHODS deserialize
|
||||
IMPORTING
|
||||
!iv_content TYPE xstring
|
||||
!iv_content TYPE string
|
||||
!iv_defaults TYPE ty_skip_paths OPTIONAL
|
||||
!iv_enum_mappings TYPE ty_enum_mappings OPTIONAL
|
||||
EXPORTING
|
||||
|
@ -99,14 +99,11 @@ CLASS zcl_abapgit_json_handler IMPLEMENTATION.
|
|||
|
||||
|
||||
METHOD deserialize.
|
||||
DATA lv_json TYPE string.
|
||||
DATA lo_ajson TYPE REF TO zif_abapgit_ajson.
|
||||
DATA lo_ajson TYPE REF TO zif_abapgit_ajson.
|
||||
|
||||
CLEAR ev_data.
|
||||
|
||||
lv_json = zcl_abapgit_convert=>xstring_to_string_utf8( iv_content ).
|
||||
|
||||
lo_ajson = zcl_abapgit_ajson=>parse( lv_json
|
||||
lo_ajson = zcl_abapgit_ajson=>parse( iv_content
|
||||
)->map( zcl_abapgit_ajson_mapping=>create_to_snake_case( ) ).
|
||||
|
||||
map2abap_original_language( CHANGING co_ajson = lo_ajson ).
|
||||
|
|
|
@ -6,14 +6,24 @@ CLASS zcl_abapgit_json_path DEFINITION PUBLIC CREATE PUBLIC.
|
|||
RAISING zcx_abapgit_exception.
|
||||
METHODS: deserialize
|
||||
IMPORTING it_json_path TYPE string_table
|
||||
RETURNING VALUE(rv_result) TYPE xstring
|
||||
RETURNING VALUE(rv_result) TYPE string
|
||||
RAISING zcx_abapgit_exception.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_json_path IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD deserialize.
|
||||
|
||||
rv_result = lcl_json_path=>deserialize( it_json_path ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD serialize.
|
||||
DATA: lo_json_path TYPE REF TO lcl_json_path,
|
||||
lv_json_xstring TYPE xstring,
|
||||
|
@ -39,11 +49,4 @@ CLASS zcl_abapgit_json_path IMPLEMENTATION.
|
|||
it_path = lt_root_path
|
||||
CHANGING ct_json_paths = rt_result ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD deserialize.
|
||||
|
||||
rv_result = lcl_json_path=>deserialize( it_json_path ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -13,7 +13,7 @@ CLASS lcl_json_path DEFINITION CREATE PUBLIC.
|
|||
|
||||
CLASS-METHODS: deserialize
|
||||
IMPORTING it_json_path TYPE string_table
|
||||
RETURNING VALUE(rv_result) TYPE xstring
|
||||
RETURNING VALUE(rv_result) TYPE string
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
PROTECTED SECTION.
|
||||
|
@ -343,8 +343,7 @@ CLASS lcl_json_path IMPLEMENTATION.
|
|||
DATA: lo_merged TYPE REF TO zif_abapgit_ajson,
|
||||
lv_json_path TYPE string,
|
||||
lo_deserialization_result TYPE REF TO zif_abapgit_ajson,
|
||||
lx_ajson TYPE REF TO zcx_abapgit_ajson_error,
|
||||
lv_result_as_string TYPE string.
|
||||
lx_ajson TYPE REF TO zcx_abapgit_ajson_error.
|
||||
|
||||
TRY.
|
||||
lo_merged = zcl_abapgit_ajson=>parse( `` ).
|
||||
|
@ -374,8 +373,7 @@ CLASS lcl_json_path IMPLEMENTATION.
|
|||
ENDLOOP.
|
||||
|
||||
TRY.
|
||||
lv_result_as_string = lo_merged->stringify( 2 ).
|
||||
rv_result = zcl_abapgit_convert=>string_to_xstring( lv_result_as_string ).
|
||||
rv_result = lo_merged->stringify( 2 ).
|
||||
CATCH zcx_abapgit_ajson_error INTO lx_ajson.
|
||||
zcx_abapgit_exception=>raise_with_text( lx_ajson ).
|
||||
ENDTRY.
|
||||
|
|
|
@ -145,7 +145,6 @@ CLASS ltcl_json_path IMPLEMENTATION.
|
|||
METHOD deserialize_nested_arrays.
|
||||
DATA: lt_file TYPE string_table,
|
||||
lo_cut TYPE REF TO zcl_abapgit_json_path,
|
||||
lv_xact TYPE xstring,
|
||||
lv_act TYPE string,
|
||||
lv_exp TYPE string,
|
||||
lt_exp TYPE string_table,
|
||||
|
@ -156,7 +155,7 @@ CLASS ltcl_json_path IMPLEMENTATION.
|
|||
APPEND `$.descriptions.methods[?(@.name=='METH1')].parameters[?(@.name=='param2')].description=ABC` TO lt_file.
|
||||
|
||||
CREATE OBJECT lo_cut.
|
||||
lv_xact = lo_cut->deserialize( lt_file ).
|
||||
lv_act = lo_cut->deserialize( lt_file ).
|
||||
|
||||
APPEND `{ "header": { "description": "Text" } ,` TO lt_exp.
|
||||
APPEND `"descriptions": {` TO lt_exp.
|
||||
|
@ -170,8 +169,6 @@ CLASS ltcl_json_path IMPLEMENTATION.
|
|||
lv_exp = concat_lines_of( table = lt_exp
|
||||
sep = cl_abap_char_utilities=>newline ).
|
||||
|
||||
lv_act = zcl_abapgit_convert=>xstring_to_string_utf8( lv_xact ).
|
||||
|
||||
lv_is_equal = zcl_abapgit_ajson_utilities=>new( )->is_equal( iv_json_a = lv_act
|
||||
iv_json_b = lv_exp ).
|
||||
|
||||
|
@ -183,16 +180,13 @@ CLASS ltcl_json_path IMPLEMENTATION.
|
|||
METHOD deserialize_simple.
|
||||
DATA: lt_file TYPE string_table,
|
||||
lo_cut TYPE REF TO zcl_abapgit_json_path,
|
||||
lv_xact TYPE xstring,
|
||||
|
||||
lv_act TYPE string,
|
||||
lv_is_equal TYPE abap_bool.
|
||||
|
||||
APPEND `$.header.description=Text` TO lt_file.
|
||||
|
||||
CREATE OBJECT lo_cut.
|
||||
lv_xact = lo_cut->deserialize( lt_file ).
|
||||
lv_act = zcl_abapgit_convert=>xstring_to_string_utf8( lv_xact ).
|
||||
lv_act = lo_cut->deserialize( lt_file ).
|
||||
|
||||
lv_is_equal = zcl_abapgit_ajson_utilities=>new( )->is_equal(
|
||||
iv_json_a = lv_act
|
||||
|
@ -206,7 +200,6 @@ CLASS ltcl_json_path IMPLEMENTATION.
|
|||
METHOD deserialize_with_comments.
|
||||
DATA: lt_file TYPE string_table,
|
||||
lo_cut TYPE REF TO zcl_abapgit_json_path,
|
||||
lv_xact TYPE xstring,
|
||||
lv_act TYPE string.
|
||||
|
||||
APPEND `# comment = abc` TO lt_file.
|
||||
|
@ -214,9 +207,7 @@ CLASS ltcl_json_path IMPLEMENTATION.
|
|||
APPEND `` TO lt_file.
|
||||
|
||||
CREATE OBJECT lo_cut.
|
||||
lv_xact = lo_cut->deserialize( lt_file ).
|
||||
lv_act = zcl_abapgit_convert=>xstring_to_string_utf8( lv_xact ).
|
||||
|
||||
lv_act = lo_cut->deserialize( lt_file ).
|
||||
|
||||
cl_abap_unit_assert=>assert_initial( lv_act ).
|
||||
|
||||
|
|
|
@ -105,11 +105,6 @@ CLASS zcl_abapgit_objects_files DEFINITION
|
|||
VALUE(rt_i18n_files) TYPE zif_abapgit_i18n_file=>ty_table_of
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS get_i18n_properties_file
|
||||
RETURNING
|
||||
VALUE(rt_result) TYPE zif_abapgit_git_definitions=>ty_files_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
|
||||
PROTECTED SECTION.
|
||||
|
||||
|
@ -297,39 +292,6 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_i18n_properties_file.
|
||||
|
||||
" TODO: replace this method with read_i18n_files
|
||||
|
||||
DATA lv_lang TYPE laiso.
|
||||
DATA lv_ext TYPE string.
|
||||
FIELD-SYMBOLS <ls_file> LIKE LINE OF mt_files.
|
||||
|
||||
LOOP AT mt_files ASSIGNING <ls_file>.
|
||||
|
||||
zcl_abapgit_filename_logic=>i18n_file_to_object(
|
||||
EXPORTING
|
||||
iv_path = <ls_file>-path
|
||||
iv_filename = <ls_file>-filename
|
||||
IMPORTING
|
||||
ev_lang = lv_lang
|
||||
ev_ext = lv_ext ).
|
||||
|
||||
IF lv_ext = 'properties'.
|
||||
|
||||
APPEND <ls_file> TO rt_result.
|
||||
mark_accessed(
|
||||
iv_path = <ls_file>-path
|
||||
iv_file = <ls_file>-filename
|
||||
iv_sha1 = <ls_file>-sha1 ).
|
||||
|
||||
ENDIF.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD is_json_metadata.
|
||||
|
||||
DATA lv_pattern TYPE string.
|
||||
|
|
|
@ -22,6 +22,12 @@ CLASS zcl_abapgit_properties_file DEFINITION
|
|||
METHODS push_text_pairs
|
||||
IMPORTING it_translation TYPE string_table.
|
||||
|
||||
METHODS get_translations
|
||||
EXPORTING
|
||||
ev_data TYPE data
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
|
||||
|
@ -40,12 +46,40 @@ CLASS zcl_abapgit_properties_file IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_translations.
|
||||
|
||||
DATA:
|
||||
lv_translation TYPE string,
|
||||
lo_ajson TYPE REF TO zcl_abapgit_json_handler,
|
||||
lo_json_path TYPE REF TO zcl_abapgit_json_path,
|
||||
lx_exception TYPE REF TO cx_static_check.
|
||||
|
||||
CREATE OBJECT lo_ajson.
|
||||
CREATE OBJECT lo_json_path.
|
||||
|
||||
TRY.
|
||||
lv_translation = lo_json_path->deserialize( mt_translation ).
|
||||
|
||||
lo_ajson->deserialize(
|
||||
EXPORTING
|
||||
iv_content = lv_translation
|
||||
IMPORTING
|
||||
ev_data = ev_data ).
|
||||
CATCH cx_static_check INTO lx_exception.
|
||||
zcx_abapgit_exception=>raise_with_text( lx_exception ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD parse.
|
||||
|
||||
DATA lv_data TYPE string.
|
||||
|
||||
lv_data = zcl_abapgit_convert=>xstring_to_string_utf8( iv_xdata ).
|
||||
|
||||
SPLIT lv_data AT cl_abap_char_utilities=>newline INTO TABLE mt_translation.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -65,17 +99,12 @@ CLASS zcl_abapgit_properties_file IMPLEMENTATION.
|
|||
|
||||
|
||||
METHOD zif_abapgit_i18n_file~render.
|
||||
DATA: lv_translation TYPE string,
|
||||
lo_buf TYPE REF TO zcl_abapgit_string_buffer,
|
||||
lv_str TYPE string.
|
||||
|
||||
DATA lv_translation TYPE string.
|
||||
|
||||
lv_translation = concat_lines_of( table = mt_translation
|
||||
sep = cl_abap_char_utilities=>newline ).
|
||||
CREATE OBJECT lo_buf.
|
||||
lo_buf->add( lv_translation ).
|
||||
|
||||
lv_str = lo_buf->join_w_newline_and_flush( ) && cl_abap_char_utilities=>newline.
|
||||
rv_data = zcl_abapgit_convert=>string_to_xstring_utf8( lv_str ).
|
||||
sep = cl_abap_char_utilities=>newline ) && cl_abap_char_utilities=>newline.
|
||||
rv_data = zcl_abapgit_convert=>string_to_xstring_utf8( lv_translation ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
|
|
@ -262,11 +262,11 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
|
|||
|
||||
|
||||
METHOD read_json.
|
||||
DATA lv_json_data TYPE xstring.
|
||||
DATA lv_json_data TYPE string.
|
||||
DATA ls_intf_aff TYPE zif_abapgit_aff_intf_v1=>ty_main.
|
||||
DATA lo_aff_mapper TYPE REF TO zif_abapgit_aff_type_mapping.
|
||||
|
||||
lv_json_data = mo_files->read_raw( 'json' ).
|
||||
lv_json_data = mo_files->read_string( 'json' ).
|
||||
ls_intf_aff = lcl_aff_metadata_handler=>deserialize( lv_json_data ).
|
||||
|
||||
CREATE OBJECT lo_aff_mapper TYPE lcl_aff_type_mapping.
|
||||
|
@ -535,6 +535,7 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
|
|||
lcl_aff_metadata_handler=>deserialize_translation(
|
||||
EXPORTING
|
||||
io_files = mo_files
|
||||
is_item = ms_item
|
||||
IMPORTING
|
||||
et_description = lt_description
|
||||
et_description_sub = lt_description_sub ).
|
||||
|
|
|
@ -508,11 +508,12 @@ CLASS lcl_aff_metadata_handler DEFINITION.
|
|||
RETURNING VALUE(rt_result) TYPE zif_abapgit_i18n_file=>ty_table_of
|
||||
RAISING zcx_abapgit_exception.
|
||||
CLASS-METHODS deserialize
|
||||
IMPORTING iv_data TYPE xstring
|
||||
IMPORTING iv_data TYPE string
|
||||
RETURNING VALUE(rv_result) TYPE zif_abapgit_aff_intf_v1=>ty_main
|
||||
RAISING zcx_abapgit_exception.
|
||||
CLASS-METHODS deserialize_translation
|
||||
IMPORTING io_files TYPE REF TO zcl_abapgit_objects_files
|
||||
is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
EXPORTING et_description TYPE zcl_abapgit_object_intf=>ty_intf-description
|
||||
et_description_sub TYPE zcl_abapgit_object_intf=>ty_intf-description_sub
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
@ -529,11 +530,7 @@ CLASS lcl_aff_metadata_handler DEFINITION.
|
|||
fill_translation
|
||||
IMPORTING iv_name TYPE seoclsname
|
||||
iv_language TYPE laiso
|
||||
RETURNING VALUE(rt_result) TYPE zif_abapgit_aff_intf_v1=>ty_main,
|
||||
get_string_table
|
||||
IMPORTING iv_xstring TYPE xstring
|
||||
RETURNING VALUE(rt_result) TYPE string_table
|
||||
RAISING zcx_abapgit_exception.
|
||||
RETURNING VALUE(rt_result) TYPE zif_abapgit_aff_intf_v1=>ty_main.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_aff_metadata_handler IMPLEMENTATION.
|
||||
|
@ -702,50 +699,29 @@ CLASS lcl_aff_metadata_handler IMPLEMENTATION.
|
|||
|
||||
|
||||
METHOD deserialize_translation.
|
||||
DATA: lt_data TYPE string_table,
|
||||
lv_xtranslation TYPE xstring,
|
||||
lo_ajson TYPE REF TO zcl_abapgit_json_handler,
|
||||
lx_exception TYPE REF TO cx_static_check,
|
||||
lv_obj_name TYPE seoclsname,
|
||||
lv_langu TYPE laiso,
|
||||
lt_translation_file TYPE zif_abapgit_git_definitions=>ty_files_tt,
|
||||
ls_translation_file TYPE zif_abapgit_git_definitions=>ty_file,
|
||||
lo_json_path TYPE REF TO zcl_abapgit_json_path,
|
||||
DATA: lo_properties_file TYPE REF TO zcl_abapgit_properties_file,
|
||||
lt_translation_file TYPE zif_abapgit_i18n_file=>ty_table_of,
|
||||
li_translation_file LIKE LINE OF lt_translation_file,
|
||||
ls_aff_data TYPE zif_abapgit_aff_intf_v1=>ty_main,
|
||||
lo_type_mapper TYPE REF TO zif_abapgit_aff_type_mapping,
|
||||
ls_ag_data TYPE zcl_abapgit_object_intf=>ty_intf.
|
||||
|
||||
lt_translation_file = io_files->get_i18n_properties_file( ).
|
||||
CREATE OBJECT lo_json_path.
|
||||
lt_translation_file = io_files->read_i18n_files( ).
|
||||
|
||||
LOOP AT lt_translation_file INTO ls_translation_file.
|
||||
LOOP AT lt_translation_file INTO li_translation_file.
|
||||
|
||||
CLEAR ls_ag_data.
|
||||
|
||||
lt_data = get_string_table( ls_translation_file-data ).
|
||||
lv_xtranslation = lo_json_path->deserialize( lt_data ).
|
||||
lo_properties_file ?= li_translation_file.
|
||||
lo_properties_file->get_translations( IMPORTING ev_data = ls_aff_data ).
|
||||
|
||||
CREATE OBJECT lo_ajson.
|
||||
TRY.
|
||||
lo_ajson->deserialize(
|
||||
EXPORTING
|
||||
iv_content = lv_xtranslation
|
||||
IMPORTING
|
||||
ev_data = ls_aff_data ).
|
||||
CATCH cx_static_check INTO lx_exception.
|
||||
zcx_abapgit_exception=>raise_with_text( lx_exception ).
|
||||
ENDTRY.
|
||||
|
||||
FIND FIRST OCCURRENCE OF REGEX '^([\w]+).*\.i18n.([a-z]{2})\.'
|
||||
IN ls_translation_file-filename SUBMATCHES lv_obj_name lv_langu.
|
||||
|
||||
ls_aff_data-header-original_language = to_upper( lv_langu ). " is target language
|
||||
ls_aff_data-header-original_language = to_upper( li_translation_file->lang( ) ). " is target language
|
||||
|
||||
CREATE OBJECT lo_type_mapper TYPE lcl_aff_type_mapping.
|
||||
lo_type_mapper->to_abapgit(
|
||||
EXPORTING
|
||||
iv_data = ls_aff_data
|
||||
iv_object_name = to_upper( lv_obj_name )
|
||||
iv_object_name = is_item-obj_name
|
||||
IMPORTING
|
||||
es_data = ls_ag_data ).
|
||||
|
||||
|
@ -754,17 +730,5 @@ CLASS lcl_aff_metadata_handler IMPLEMENTATION.
|
|||
|
||||
ENDLOOP.
|
||||
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_string_table.
|
||||
|
||||
DATA lv_data TYPE string.
|
||||
|
||||
lv_data = zcl_abapgit_convert=>xstring_to_string_utf8( iv_xstring ).
|
||||
SPLIT lv_data AT cl_abap_char_utilities=>newline INTO TABLE rt_result.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -363,7 +363,6 @@ CLASS ltcl_aff_metadata IMPLEMENTATION.
|
|||
METHOD deserialize_non_defaults.
|
||||
DATA:
|
||||
lv_source TYPE string,
|
||||
lv_source_xstring TYPE xstring,
|
||||
ls_description_type TYPE zif_abapgit_aff_oo_types_v1=>ty_component_description,
|
||||
ls_description_attr TYPE zif_abapgit_aff_oo_types_v1=>ty_component_description,
|
||||
ls_description_meth_param TYPE zif_abapgit_aff_oo_types_v1=>ty_component_description,
|
||||
|
@ -447,10 +446,8 @@ CLASS ltcl_aff_metadata IMPLEMENTATION.
|
|||
` }` && cl_abap_char_utilities=>newline &&
|
||||
`}` && cl_abap_char_utilities=>newline.
|
||||
|
||||
lv_source_xstring = cl_abap_codepage=>convert_to( lv_source ).
|
||||
|
||||
" cut
|
||||
ls_actual = lcl_aff_metadata_handler=>deserialize( lv_source_xstring ).
|
||||
ls_actual = lcl_aff_metadata_handler=>deserialize( lv_source ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( act = ls_actual
|
||||
exp = ls_expected ).
|
||||
|
@ -459,7 +456,6 @@ CLASS ltcl_aff_metadata IMPLEMENTATION.
|
|||
METHOD deserialize_defaults.
|
||||
DATA:
|
||||
lv_source TYPE string,
|
||||
lv_source_xstring TYPE xstring,
|
||||
ls_actual TYPE zif_abapgit_aff_intf_v1=>ty_main,
|
||||
ls_expected TYPE zif_abapgit_aff_intf_v1=>ty_main.
|
||||
|
||||
|
@ -480,10 +476,8 @@ CLASS ltcl_aff_metadata IMPLEMENTATION.
|
|||
` }` && cl_abap_char_utilities=>newline &&
|
||||
`}` && cl_abap_char_utilities=>newline.
|
||||
|
||||
lv_source_xstring = cl_abap_codepage=>convert_to( lv_source ).
|
||||
|
||||
" cut
|
||||
ls_actual = lcl_aff_metadata_handler=>deserialize( lv_source_xstring ).
|
||||
ls_actual = lcl_aff_metadata_handler=>deserialize( lv_source ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( act = ls_actual
|
||||
exp = ls_expected ).
|
||||
|
|
Loading…
Reference in New Issue
Block a user