mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 20:32:26 +08:00
342 lines
7.5 KiB
ABAP
342 lines
7.5 KiB
ABAP
CLASS lcl_mapping_fields IMPLEMENTATION. "DEPRECATED
|
|
|
|
|
|
METHOD constructor.
|
|
|
|
DATA ls_mapping_field LIKE LINE OF mt_mapping_fields.
|
|
|
|
LOOP AT it_mapping_fields INTO ls_mapping_field.
|
|
ls_mapping_field-abap = to_upper( ls_mapping_field-abap ).
|
|
INSERT ls_mapping_field INTO TABLE mt_mapping_fields.
|
|
ENDLOOP.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_ajson_mapping~to_abap.
|
|
|
|
DATA ls_mapping_field LIKE LINE OF mt_mapping_fields.
|
|
|
|
READ TABLE mt_mapping_fields INTO ls_mapping_field
|
|
WITH KEY json COMPONENTS json = iv_name.
|
|
IF sy-subrc = 0.
|
|
rv_result = ls_mapping_field-abap.
|
|
ENDIF.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_ajson_mapping~to_json.
|
|
|
|
DATA lv_field TYPE string.
|
|
DATA ls_mapping_field LIKE LINE OF mt_mapping_fields.
|
|
|
|
lv_field = to_upper( iv_name ).
|
|
|
|
READ TABLE mt_mapping_fields INTO ls_mapping_field
|
|
WITH KEY abap COMPONENTS abap = lv_field.
|
|
IF sy-subrc = 0.
|
|
rv_result = ls_mapping_field-json.
|
|
ENDIF.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD zif_abapgit_ajson_mapping~rename_node.
|
|
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|
|
|
|
CLASS lcl_rename IMPLEMENTATION.
|
|
|
|
METHOD constructor.
|
|
mt_rename_map = it_rename_map.
|
|
mv_rename_by = iv_rename_by.
|
|
ENDMETHOD.
|
|
|
|
METHOD zif_abapgit_ajson_mapping~to_abap.
|
|
ENDMETHOD.
|
|
|
|
METHOD zif_abapgit_ajson_mapping~to_json.
|
|
ENDMETHOD.
|
|
|
|
METHOD zif_abapgit_ajson_mapping~rename_node.
|
|
|
|
DATA lv_full_path TYPE string.
|
|
DATA lv_pair_found TYPE abap_bool.
|
|
FIELD-SYMBOLS <r> LIKE LINE OF mt_rename_map.
|
|
|
|
CASE mv_rename_by.
|
|
WHEN zcl_abapgit_ajson_mapping=>rename_by-attr_name.
|
|
READ TABLE mt_rename_map ASSIGNING <r> WITH TABLE KEY by_name COMPONENTS from = cv_name.
|
|
lv_pair_found = boolc( sy-subrc = 0 ).
|
|
WHEN zcl_abapgit_ajson_mapping=>rename_by-full_path.
|
|
lv_full_path = is_node-path && cv_name.
|
|
READ TABLE mt_rename_map ASSIGNING <r> WITH TABLE KEY by_name COMPONENTS from = lv_full_path.
|
|
lv_pair_found = boolc( sy-subrc = 0 ).
|
|
WHEN zcl_abapgit_ajson_mapping=>rename_by-pattern.
|
|
lv_full_path = is_node-path && cv_name.
|
|
LOOP AT mt_rename_map ASSIGNING <r>.
|
|
IF lv_full_path CP <r>-from.
|
|
lv_pair_found = abap_true.
|
|
EXIT.
|
|
ENDIF.
|
|
ENDLOOP.
|
|
WHEN OTHERS.
|
|
lv_pair_found = abap_false. " No rename
|
|
ENDCASE.
|
|
|
|
IF lv_pair_found = abap_true.
|
|
cv_name = <r>-to.
|
|
ENDIF.
|
|
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|
|
|
|
CLASS lcl_mapping_to_upper IMPLEMENTATION.
|
|
|
|
|
|
METHOD constructor.
|
|
|
|
mi_mapping_fields = zcl_abapgit_ajson_mapping=>create_field_mapping( it_mapping_fields ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_ajson_mapping~to_abap.
|
|
|
|
rv_result = mi_mapping_fields->to_abap( iv_path = iv_path
|
|
iv_name = iv_name ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_ajson_mapping~to_json.
|
|
|
|
rv_result = mi_mapping_fields->to_json( iv_path = iv_path
|
|
iv_name = iv_name ).
|
|
|
|
IF rv_result IS NOT INITIAL. " Mapping found
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
rv_result = to_upper( iv_name ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD zif_abapgit_ajson_mapping~rename_node.
|
|
|
|
cv_name = to_upper( cv_name ).
|
|
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS lcl_mapping_to_lower IMPLEMENTATION.
|
|
|
|
|
|
METHOD constructor.
|
|
|
|
mi_mapping_fields = zcl_abapgit_ajson_mapping=>create_field_mapping( it_mapping_fields ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_ajson_mapping~to_abap.
|
|
|
|
rv_result = mi_mapping_fields->to_abap( iv_path = iv_path
|
|
iv_name = iv_name ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_ajson_mapping~to_json.
|
|
|
|
rv_result = mi_mapping_fields->to_json( iv_path = iv_path
|
|
iv_name = iv_name ).
|
|
|
|
IF rv_result IS NOT INITIAL. " Mapping found
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
rv_result = to_lower( iv_name ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD zif_abapgit_ajson_mapping~rename_node.
|
|
|
|
cv_name = to_lower( cv_name ).
|
|
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS lcl_mapping_camel IMPLEMENTATION. "DEPRECATED
|
|
|
|
|
|
METHOD constructor.
|
|
|
|
mi_mapping_fields = zcl_abapgit_ajson_mapping=>create_field_mapping( it_mapping_fields ).
|
|
mv_first_json_upper = iv_first_json_upper.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_ajson_mapping~to_abap.
|
|
|
|
rv_result = mi_mapping_fields->to_abap( iv_path = iv_path
|
|
iv_name = iv_name ).
|
|
|
|
IF rv_result IS NOT INITIAL. " Mapping found
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
rv_result = iv_name.
|
|
|
|
REPLACE ALL OCCURRENCES OF REGEX `([a-z])([A-Z])` IN rv_result WITH `$1_$2`.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_ajson_mapping~to_json.
|
|
|
|
TYPES ty_token TYPE c LENGTH 255.
|
|
DATA lt_tokens TYPE STANDARD TABLE OF ty_token.
|
|
DATA lv_from TYPE i.
|
|
FIELD-SYMBOLS <token> LIKE LINE OF lt_tokens.
|
|
|
|
rv_result = mi_mapping_fields->to_json( iv_path = iv_path
|
|
iv_name = iv_name ).
|
|
|
|
IF rv_result IS NOT INITIAL. " Mapping found
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
rv_result = iv_name.
|
|
|
|
REPLACE ALL OCCURRENCES OF `__` IN rv_result WITH `*`.
|
|
|
|
TRANSLATE rv_result TO LOWER CASE.
|
|
TRANSLATE rv_result USING `/_:_~_`.
|
|
|
|
IF mv_first_json_upper = abap_true.
|
|
lv_from = 1.
|
|
ELSE.
|
|
lv_from = 2.
|
|
ENDIF.
|
|
|
|
SPLIT rv_result AT `_` INTO TABLE lt_tokens.
|
|
LOOP AT lt_tokens ASSIGNING <token> FROM lv_from.
|
|
TRANSLATE <token>(1) TO UPPER CASE.
|
|
ENDLOOP.
|
|
|
|
CONCATENATE LINES OF lt_tokens INTO rv_result.
|
|
REPLACE ALL OCCURRENCES OF `*` IN rv_result WITH `_`.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD zif_abapgit_ajson_mapping~rename_node.
|
|
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|
|
|
|
CLASS lcl_compound_mapper IMPLEMENTATION.
|
|
|
|
METHOD constructor.
|
|
mt_queue = it_queue.
|
|
ENDMETHOD.
|
|
|
|
METHOD zif_abapgit_ajson_mapping~rename_node.
|
|
|
|
DATA ls_node LIKE is_node.
|
|
DATA li_mapper LIKE LINE OF mt_queue.
|
|
|
|
ls_node = is_node.
|
|
|
|
LOOP AT mt_queue INTO li_mapper.
|
|
li_mapper->rename_node(
|
|
EXPORTING
|
|
is_node = ls_node
|
|
CHANGING
|
|
cv_name = cv_name ).
|
|
ls_node-name = cv_name.
|
|
ENDLOOP.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD zif_abapgit_ajson_mapping~to_abap.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD zif_abapgit_ajson_mapping~to_json.
|
|
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|
|
|
|
CLASS lcl_to_snake IMPLEMENTATION.
|
|
|
|
METHOD zif_abapgit_ajson_mapping~rename_node.
|
|
|
|
REPLACE ALL OCCURRENCES OF REGEX `([a-z])([A-Z])` IN cv_name WITH `$1_$2`.
|
|
cv_name = to_lower( cv_name ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD zif_abapgit_ajson_mapping~to_abap.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD zif_abapgit_ajson_mapping~to_json.
|
|
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|
|
|
|
CLASS lcl_to_camel IMPLEMENTATION.
|
|
|
|
METHOD constructor.
|
|
mv_first_json_upper = iv_first_json_upper.
|
|
ENDMETHOD.
|
|
|
|
METHOD zif_abapgit_ajson_mapping~rename_node.
|
|
|
|
TYPES lty_token TYPE c LENGTH 255.
|
|
CONSTANTS lc_forced_underscore_marker TYPE c LENGTH 1 VALUE cl_abap_char_utilities=>horizontal_tab.
|
|
|
|
DATA lt_tokens TYPE STANDARD TABLE OF lty_token.
|
|
DATA lv_from TYPE i.
|
|
FIELD-SYMBOLS <token> LIKE LINE OF lt_tokens.
|
|
|
|
IF mv_first_json_upper = abap_true.
|
|
lv_from = 1.
|
|
ELSE.
|
|
lv_from = 2.
|
|
ENDIF.
|
|
REPLACE ALL OCCURRENCES OF `__` IN cv_name WITH lc_forced_underscore_marker. " Force underscore
|
|
|
|
SPLIT cv_name AT `_` INTO TABLE lt_tokens.
|
|
DELETE lt_tokens WHERE table_line IS INITIAL.
|
|
LOOP AT lt_tokens ASSIGNING <token> FROM lv_from.
|
|
TRANSLATE <token>+0(1) TO UPPER CASE.
|
|
ENDLOOP.
|
|
|
|
CONCATENATE LINES OF lt_tokens INTO cv_name.
|
|
REPLACE ALL OCCURRENCES OF lc_forced_underscore_marker IN cv_name WITH `_`.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD zif_abapgit_ajson_mapping~to_abap.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD zif_abapgit_ajson_mapping~to_json.
|
|
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|