mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 11:46:38 +08:00
Refactor: i18n filename logic (#6892)
Co-authored-by: Albert Mink <albert.mink@sap.com>
This commit is contained in:
parent
72d80c1120
commit
412cd9995b
|
@ -46,6 +46,17 @@ CLASS zcl_abapgit_filename_logic DEFINITION
|
|||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
|
||||
CLASS-METHODS i18n_file_to_object
|
||||
IMPORTING
|
||||
!iv_filename TYPE string
|
||||
!iv_path TYPE string
|
||||
EXPORTING
|
||||
!es_item TYPE zif_abapgit_definitions=>ty_item
|
||||
!ev_lang TYPE laiso
|
||||
!ev_ext TYPE string
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
|
||||
CLASS-METHODS object_to_file
|
||||
IMPORTING
|
||||
!is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
|
@ -54,6 +65,14 @@ CLASS zcl_abapgit_filename_logic DEFINITION
|
|||
RETURNING
|
||||
VALUE(rv_filename) TYPE string .
|
||||
|
||||
CLASS-METHODS object_to_i18n_file
|
||||
IMPORTING
|
||||
!is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
!iv_lang TYPE laiso
|
||||
!iv_ext TYPE string
|
||||
RETURNING
|
||||
VALUE(rv_filename) TYPE string.
|
||||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
|
||||
|
@ -122,7 +141,9 @@ CLASS zcl_abapgit_filename_logic IMPLEMENTATION.
|
|||
REPLACE ALL OCCURRENCES OF '#' IN lv_ext WITH '/'.
|
||||
|
||||
" Assume AFF namespace convention
|
||||
CREATE OBJECT go_aff_registry TYPE zcl_abapgit_aff_registry.
|
||||
IF go_aff_registry IS INITIAL.
|
||||
CREATE OBJECT go_aff_registry TYPE zcl_abapgit_aff_registry.
|
||||
ENDIF.
|
||||
|
||||
IF go_aff_registry->is_supported_object_type( |{ lv_type }| ) = abap_true.
|
||||
REPLACE ALL OCCURRENCES OF '(' IN lv_name WITH '/'.
|
||||
|
@ -157,6 +178,26 @@ CLASS zcl_abapgit_filename_logic IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD i18n_file_to_object.
|
||||
|
||||
DATA lo_dot TYPE REF TO zcl_abapgit_dot_abapgit.
|
||||
|
||||
lo_dot = zcl_abapgit_dot_abapgit=>build_default( ).
|
||||
|
||||
file_to_object(
|
||||
EXPORTING
|
||||
iv_filename = iv_filename
|
||||
iv_path = iv_path
|
||||
io_dot = lo_dot
|
||||
IMPORTING
|
||||
es_item = es_item ).
|
||||
|
||||
FIND FIRST OCCURRENCE OF REGEX 'i18n\.([^.]{2})\.([^.]+)$' IN iv_filename
|
||||
SUBMATCHES ev_lang ev_ext ##SUBRC_OK.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD is_obj_definition_file.
|
||||
|
||||
DATA:
|
||||
|
@ -300,4 +341,14 @@ CLASS zcl_abapgit_filename_logic IMPLEMENTATION.
|
|||
TRANSLATE rv_filename TO LOWER CASE.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD object_to_i18n_file.
|
||||
|
||||
rv_filename = object_to_file(
|
||||
is_item = is_item
|
||||
iv_extra = |i18n.{ iv_lang }|
|
||||
iv_ext = iv_ext ).
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
|
@ -28,6 +28,8 @@ CLASS ltcl_run_checks DEFINITION FOR TESTING RISK LEVEL HARMLESS
|
|||
dot_abapgit FOR TESTING RAISING zcx_abapgit_exception,
|
||||
file_to_object FOR TESTING RAISING zcx_abapgit_exception,
|
||||
object_to_file FOR TESTING RAISING zcx_abapgit_exception,
|
||||
i18n_file_to_object FOR TESTING RAISING zcx_abapgit_exception,
|
||||
object_to_i18n_file FOR TESTING RAISING zcx_abapgit_exception,
|
||||
file_to_object_package FOR TESTING RAISING zcx_abapgit_exception,
|
||||
object_to_file_package FOR TESTING RAISING zcx_abapgit_exception.
|
||||
|
||||
|
@ -381,6 +383,90 @@ CLASS ltcl_run_checks IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD i18n_file_to_object.
|
||||
|
||||
DATA ls_item TYPE zif_abapgit_definitions=>ty_item.
|
||||
DATA lv_lang TYPE laiso.
|
||||
DATA lv_ext TYPE string.
|
||||
|
||||
" PO file
|
||||
zcl_abapgit_filename_logic=>i18n_file_to_object(
|
||||
EXPORTING
|
||||
iv_filename = 'zprogram.prog.i18n.de.po'
|
||||
iv_path = '/src/'
|
||||
IMPORTING
|
||||
es_item = ls_item
|
||||
ev_lang = lv_lang
|
||||
ev_ext = lv_ext ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = 'PROG'
|
||||
act = ls_item-obj_type ).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = 'ZPROGRAM'
|
||||
act = ls_item-obj_name ).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = 'de'
|
||||
act = lv_lang ).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = 'po'
|
||||
act = lv_ext ).
|
||||
|
||||
" Properties file
|
||||
zcl_abapgit_filename_logic=>i18n_file_to_object(
|
||||
EXPORTING
|
||||
iv_filename = 'zprogram.prog.i18n.en.properties'
|
||||
iv_path = '/src/'
|
||||
IMPORTING
|
||||
es_item = ls_item
|
||||
ev_lang = lv_lang
|
||||
ev_ext = lv_ext ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = 'PROG'
|
||||
act = ls_item-obj_type ).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = 'ZPROGRAM'
|
||||
act = ls_item-obj_name ).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = 'en'
|
||||
act = lv_lang ).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = 'properties'
|
||||
act = lv_ext ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD object_to_i18n_file.
|
||||
|
||||
DATA ls_item TYPE zif_abapgit_definitions=>ty_item.
|
||||
DATA lv_filename TYPE string.
|
||||
|
||||
ls_item-obj_type = 'PROG'.
|
||||
ls_item-obj_name = 'ZPROGRAM'.
|
||||
|
||||
" PO file
|
||||
lv_filename = zcl_abapgit_filename_logic=>object_to_i18n_file(
|
||||
is_item = ls_item
|
||||
iv_lang = 'de'
|
||||
iv_ext = 'po' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = 'zprogram.prog.i18n.de.po'
|
||||
act = lv_filename ).
|
||||
|
||||
" Properties files
|
||||
lv_filename = zcl_abapgit_filename_logic=>object_to_i18n_file(
|
||||
is_item = ls_item
|
||||
iv_lang = 'en'
|
||||
iv_ext = 'properties' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = 'zprogram.prog.i18n.en.properties'
|
||||
act = lv_filename ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD file_to_object_package.
|
||||
|
||||
DATA ls_item TYPE zif_abapgit_definitions=>ty_item.
|
||||
|
|
|
@ -106,7 +106,10 @@ CLASS zcl_abapgit_objects_files DEFINITION
|
|||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS get_i18n_properties_file
|
||||
RETURNING VALUE(rt_result) TYPE zif_abapgit_git_definitions=>ty_files_tt.
|
||||
RETURNING
|
||||
VALUE(rt_result) TYPE zif_abapgit_git_definitions=>ty_files_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
|
||||
PROTECTED SECTION.
|
||||
|
||||
|
@ -175,9 +178,9 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
ls_file-path = '/'.
|
||||
ls_file-filename = zcl_abapgit_filename_logic=>object_to_file(
|
||||
ls_file-filename = zcl_abapgit_filename_logic=>object_to_i18n_file(
|
||||
is_item = ms_item
|
||||
iv_extra = |i18n.{ ii_i18n_file->lang( ) }|
|
||||
iv_lang = ii_i18n_file->lang( )
|
||||
iv_ext = ii_i18n_file->ext( ) ).
|
||||
|
||||
APPEND ls_file TO mt_files.
|
||||
|
@ -205,7 +208,6 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
|
|||
|
||||
DATA: ls_file TYPE zif_abapgit_git_definitions=>ty_file.
|
||||
|
||||
|
||||
ls_file-path = '/'.
|
||||
ls_file-filename = zcl_abapgit_filename_logic=>object_to_file(
|
||||
is_item = ms_item
|
||||
|
@ -295,6 +297,39 @@ 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.
|
||||
|
@ -397,22 +432,33 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
|
|||
|
||||
METHOD read_i18n_files.
|
||||
|
||||
DATA lv_lang TYPE laiso.
|
||||
DATA lv_ext TYPE string.
|
||||
DATA lo_po TYPE REF TO zcl_abapgit_po_file.
|
||||
DATA:
|
||||
lv_lang TYPE laiso,
|
||||
lv_ext TYPE string,
|
||||
lo_po TYPE REF TO zcl_abapgit_po_file,
|
||||
lo_properties TYPE REF TO zcl_abapgit_properties_file.
|
||||
|
||||
FIELD-SYMBOLS <ls_file> LIKE LINE OF mt_files.
|
||||
|
||||
LOOP AT mt_files ASSIGNING <ls_file>.
|
||||
|
||||
" TODO: Maybe this should be in zcl_abapgit_filename_logic
|
||||
FIND FIRST OCCURRENCE OF REGEX 'i18n\.([^.]{2})\.([^.]+)$' IN <ls_file>-filename SUBMATCHES lv_lang lv_ext.
|
||||
CHECK sy-subrc = 0.
|
||||
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 ).
|
||||
|
||||
CASE lv_ext.
|
||||
WHEN 'po'.
|
||||
CREATE OBJECT lo_po EXPORTING iv_lang = lv_lang.
|
||||
lo_po->parse( <ls_file>-data ).
|
||||
APPEND lo_po TO rt_i18n_files.
|
||||
WHEN 'properties'.
|
||||
CREATE OBJECT lo_properties EXPORTING iv_lang = lv_lang.
|
||||
lo_properties->parse( <ls_file>-data ).
|
||||
APPEND lo_properties TO rt_i18n_files.
|
||||
WHEN OTHERS.
|
||||
CONTINUE. " Unsupported i18n file type
|
||||
ENDCASE.
|
||||
|
@ -499,31 +545,4 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
|
|||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_i18n_properties_file.
|
||||
|
||||
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>.
|
||||
|
||||
" TODO: Maybe this should be in zcl_abapgit_filename_logic
|
||||
FIND FIRST OCCURRENCE OF REGEX 'i18n\.([^.]{2})\.([^.]+)$' IN <ls_file>-filename SUBMATCHES lv_lang lv_ext.
|
||||
CHECK sy-subrc = 0.
|
||||
|
||||
IF sy-subrc = 0 AND 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.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -47,7 +47,6 @@ CLASS zcl_abapgit_po_file DEFINITION
|
|||
comments TYPE STANDARD TABLE OF ty_comment WITH KEY kind text,
|
||||
END OF ty_msg_pair.
|
||||
|
||||
|
||||
DATA mv_lang TYPE laiso.
|
||||
DATA mt_pairs TYPE SORTED TABLE OF ty_msg_pair WITH UNIQUE KEY source.
|
||||
|
||||
|
@ -86,7 +85,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_PO_FILE IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_po_file IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD build_po_body.
|
||||
|
|
|
@ -10,7 +10,14 @@ CLASS zcl_abapgit_properties_file DEFINITION
|
|||
c_properties_feature TYPE string VALUE 'TRANSL'.
|
||||
|
||||
METHODS constructor
|
||||
IMPORTING iv_lang TYPE laiso.
|
||||
IMPORTING
|
||||
iv_lang TYPE laiso.
|
||||
|
||||
METHODS parse
|
||||
IMPORTING
|
||||
iv_xdata TYPE xstring
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
METHODS push_text_pairs
|
||||
IMPORTING it_translation TYPE string_table.
|
||||
|
@ -28,12 +35,20 @@ ENDCLASS.
|
|||
CLASS zcl_abapgit_properties_file IMPLEMENTATION.
|
||||
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
mv_lang = to_lower( iv_lang ).
|
||||
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.
|
||||
|
||||
|
||||
METHOD push_text_pairs.
|
||||
mt_translation = it_translation.
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
INTERFACE zif_abapgit_i18n_file
|
||||
PUBLIC.
|
||||
INTERFACE zif_abapgit_i18n_file PUBLIC.
|
||||
|
||||
TYPES: ty_table_of TYPE STANDARD TABLE OF REF TO zif_abapgit_i18n_file WITH DEFAULT KEY.
|
||||
TYPES ty_table_of TYPE STANDARD TABLE OF REF TO zif_abapgit_i18n_file WITH DEFAULT KEY.
|
||||
|
||||
METHODS render
|
||||
RETURNING
|
||||
VALUE(rv_data) TYPE xstring
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
METHODS translate
|
||||
CHANGING
|
||||
ct_text_pairs TYPE zif_abapgit_lxe_texts=>ty_text_pairs
|
||||
|
@ -17,8 +17,9 @@ INTERFACE zif_abapgit_i18n_file
|
|||
METHODS ext
|
||||
RETURNING
|
||||
VALUE(rv_ext) TYPE string.
|
||||
|
||||
METHODS lang
|
||||
RETURNING
|
||||
VALUE(rv_lang) TYPE string.
|
||||
VALUE(rv_lang) TYPE laiso.
|
||||
|
||||
ENDINTERFACE.
|
||||
|
|
Loading…
Reference in New Issue
Block a user