Merge branch 'main' into hvam/deps1303

This commit is contained in:
Lars Hvam 2025-03-13 16:30:08 +01:00 committed by GitHub
commit 3a5425a9b2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 66 additions and 3 deletions

View File

@ -848,6 +848,8 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
DATA lv_path_pattern TYPE string. DATA lv_path_pattern TYPE string.
CREATE OBJECT lo_section. CREATE OBJECT lo_section.
lo_section->mi_custom_mapping = mi_custom_mapping.
lv_normalized_path = lcl_utils=>normalize_path( iv_path ). lv_normalized_path = lcl_utils=>normalize_path( iv_path ).
lv_path_len = strlen( lv_normalized_path ). lv_path_len = strlen( lv_normalized_path ).
ls_path_parts = lcl_utils=>split_path( lv_normalized_path ). ls_path_parts = lcl_utils=>split_path( lv_normalized_path ).

View File

@ -72,7 +72,7 @@ CLASS lcl_paths_filter IMPLEMENTATION.
ENDIF. ENDIF.
LOOP AT it_skip_paths INTO lv_s. LOOP AT it_skip_paths INTO lv_s.
lv_s = to_lower( lv_s ). lv_s = condense( lv_s ).
APPEND lv_s TO lt_tab. APPEND lv_s TO lt_tab.
ENDLOOP. ENDLOOP.
@ -83,7 +83,7 @@ CLASS lcl_paths_filter IMPLEMENTATION.
DELETE lt_tab INDEX sy-tabix. DELETE lt_tab INDEX sy-tabix.
CONTINUE. CONTINUE.
ENDIF. ENDIF.
<s> = condense( to_lower( <s> ) ). <s> = condense( <s> ).
ENDLOOP. ENDLOOP.
ENDIF. ENDIF.

View File

@ -10,6 +10,7 @@ CLASS ltcl_filters_test DEFINITION FINAL
METHODS path_filter_w_patterns FOR TESTING RAISING zcx_abapgit_ajson_error. METHODS path_filter_w_patterns FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS path_filter_deep FOR TESTING RAISING zcx_abapgit_ajson_error. METHODS path_filter_deep FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS and_filter FOR TESTING RAISING zcx_abapgit_ajson_error. METHODS and_filter FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS mixed_case_filter FOR TESTING RAISING zcx_abapgit_ajson_error.
ENDCLASS. ENDCLASS.
@ -227,4 +228,36 @@ CLASS ltcl_filters_test IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD mixed_case_filter.
DATA li_json TYPE REF TO zif_abapgit_ajson.
DATA li_json_filtered TYPE REF TO zif_abapgit_ajson.
li_json = zcl_abapgit_ajson=>create_empty( ).
li_json->set(
iv_path = '/a'
iv_val = '1' ).
li_json->set(
iv_path = '/bB'
iv_val = '2' ).
li_json->set(
iv_path = '/CC'
iv_val = '3' ).
li_json->set(
iv_path = '/cc'
iv_val = '4' ).
li_json->set(
iv_path = '/d'
iv_val = 5 ).
li_json_filtered = zcl_abapgit_ajson=>create_from(
ii_source_json = li_json
ii_filter = zcl_abapgit_ajson_filter_lib=>create_path_filter( iv_skip_paths = '/bB,/CC' ) ).
cl_abap_unit_assert=>assert_equals(
act = li_json_filtered->stringify( )
exp = '{"a":"1","cc":"4","d":5}' ).
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -358,6 +358,7 @@ CLASS ltcl_fields DEFINITION FINAL FOR TESTING
to_json_without_path FOR TESTING RAISING zcx_abapgit_ajson_error, to_json_without_path FOR TESTING RAISING zcx_abapgit_ajson_error,
to_json_with_path FOR TESTING RAISING zcx_abapgit_ajson_error, to_json_with_path FOR TESTING RAISING zcx_abapgit_ajson_error,
to_abap FOR TESTING RAISING zcx_abapgit_ajson_error, to_abap FOR TESTING RAISING zcx_abapgit_ajson_error,
to_abap_with_slice FOR TESTING RAISING zcx_abapgit_ajson_error,
to_json IMPORTING iv_path TYPE string RETURNING VALUE(rv_result) TYPE string RAISING zcx_abapgit_ajson_error. to_json IMPORTING iv_path TYPE string RETURNING VALUE(rv_result) TYPE string RAISING zcx_abapgit_ajson_error.
@ -403,6 +404,33 @@ CLASS ltcl_fields IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD to_abap_with_slice.
DATA: BEGIN OF ls_act,
y TYPE i,
END OF ls_act.
DATA lo_cut TYPE REF TO zif_abapgit_ajson.
DATA lt_mapping_fields TYPE zif_abapgit_ajson_mapping=>ty_mapping_fields.
DATA ls_mapping_field LIKE LINE OF lt_mapping_fields.
CLEAR ls_mapping_field.
ls_mapping_field-abap = 'Y'.
ls_mapping_field-json = 'c'.
INSERT ls_mapping_field INTO TABLE lt_mapping_fields.
lo_cut = zcl_abapgit_ajson=>parse( iv_json = '{"a":1,"b":{"c":2},"d":{"e":3}}'
ii_custom_mapping = zcl_abapgit_ajson_mapping=>create_field_mapping( lt_mapping_fields )
)->slice( `/b` ).
lo_cut->to_abap( IMPORTING ev_container = ls_act ).
cl_abap_unit_assert=>assert_equals(
act = ls_act-y
exp = 2 ).
ENDMETHOD.
METHOD to_json_without_path. METHOD to_json_without_path.

View File

@ -1,7 +1,7 @@
INTERFACE zif_abapgit_ajson INTERFACE zif_abapgit_ajson
PUBLIC. PUBLIC.
CONSTANTS version TYPE string VALUE 'v1.1.10'. "#EC NOTEXT CONSTANTS version TYPE string VALUE 'v1.1.11'. "#EC NOTEXT
CONSTANTS origin TYPE string VALUE 'https://github.com/sbcgua/ajson'. "#EC NOTEXT CONSTANTS origin TYPE string VALUE 'https://github.com/sbcgua/ajson'. "#EC NOTEXT
CONSTANTS license TYPE string VALUE 'MIT'. "#EC NOTEXT CONSTANTS license TYPE string VALUE 'MIT'. "#EC NOTEXT