From 0514b2df6267716136066bb5f87f3d166cf7ac1f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 14:54:58 +0100 Subject: [PATCH] ajson, Automatic Update (#6796) Co-authored-by: larshp Co-authored-by: Lars Hvam --- .../zcl_abapgit_ajson.clas.locals_imp.abap | 26 ++++++++++++ .../zcl_abapgit_ajson.clas.testclasses.abap | 42 ++++++++++++++++++- src/json/zif_abapgit_ajson.intf.abap | 2 +- 3 files changed, 68 insertions(+), 2 deletions(-) diff --git a/src/json/zcl_abapgit_ajson.clas.locals_imp.abap b/src/json/zcl_abapgit_ajson.clas.locals_imp.abap index f69b411fb..d256a8b59 100644 --- a/src/json/zcl_abapgit_ajson.clas.locals_imp.abap +++ b/src/json/zcl_abapgit_ajson.clas.locals_imp.abap @@ -672,6 +672,14 @@ CLASS lcl_json_to_abap DEFINITION FINAL. RAISING zcx_abapgit_ajson_error. + METHODS to_time + IMPORTING + iv_value TYPE zif_abapgit_ajson_types=>ty_node-value + RETURNING + VALUE(rv_result) TYPE t + RAISING + zcx_abapgit_ajson_error. + PRIVATE SECTION. TYPES: @@ -986,6 +994,8 @@ CLASS lcl_json_to_abap IMPLEMENTATION. " TODO: check type ? IF is_node_type-type_kind = lif_kind=>date AND is_node-value IS NOT INITIAL. = to_date( is_node-value ). + ELSEIF is_node_type-type_kind = lif_kind=>time AND is_node-value IS NOT INITIAL. + = to_time( is_node-value ). ELSEIF is_node_type-type_kind = lif_kind=>packed AND is_node-value IS NOT INITIAL. = to_timestamp( is_node-value ). ELSE. @@ -1095,6 +1105,22 @@ CLASS lcl_json_to_abap IMPLEMENTATION. ENDMETHOD. + METHOD to_time. + + DATA lv_h TYPE c LENGTH 2. + DATA lv_m TYPE c LENGTH 2. + DATA lv_s TYPE c LENGTH 2. + + FIND FIRST OCCURRENCE OF REGEX '^(\d{2}):(\d{2}):(\d{2})(T|$)' + IN iv_value + SUBMATCHES lv_h lv_m lv_s. + IF sy-subrc <> 0. + zcx_abapgit_ajson_error=>raise( 'Unexpected time format' ). + ENDIF. + CONCATENATE lv_h lv_m lv_s INTO rv_result. + + ENDMETHOD. + ENDCLASS. ********************************************************************** diff --git a/src/json/zcl_abapgit_ajson.clas.testclasses.abap b/src/json/zcl_abapgit_ajson.clas.testclasses.abap index 62cb0cac8..df950ce5e 100644 --- a/src/json/zcl_abapgit_ajson.clas.testclasses.abap +++ b/src/json/zcl_abapgit_ajson.clas.testclasses.abap @@ -1459,7 +1459,9 @@ CLASS ltcl_json_to_abap DEFINITION METHODS to_abap_corresponding_pub_neg FOR TESTING RAISING zcx_abapgit_ajson_error. - + METHODS to_abap_time + FOR TESTING + RAISING cx_static_check. ENDCLASS. CLASS zcl_abapgit_ajson DEFINITION LOCAL FRIENDS ltcl_json_to_abap. @@ -1536,6 +1538,44 @@ CLASS ltcl_json_to_abap IMPLEMENTATION. ENDMETHOD. + METHOD to_abap_time. + + DATA lo_cut TYPE REF TO lcl_json_to_abap. + DATA lv_mock TYPE t. + DATA lo_nodes TYPE REF TO lcl_nodes_helper. + + CREATE OBJECT lo_nodes. + lo_nodes->add( ' | |str |11:11:11| ' ). + + CREATE OBJECT lo_cut. + lo_cut->to_abap( + EXPORTING + it_nodes = lo_nodes->sorted( ) + CHANGING + c_container = lv_mock ). + + cl_abap_unit_assert=>assert_equals( + act = lv_mock + exp = '111111' ). + + DATA lv_mock_init TYPE t. + + CREATE OBJECT lo_nodes. + lo_nodes->add( ' | |str || ' ). + + CREATE OBJECT lo_cut. + lo_cut->to_abap( + EXPORTING + it_nodes = lo_nodes->sorted( ) + CHANGING + c_container = lv_mock_init ). + + cl_abap_unit_assert=>assert_equals( + act = lv_mock_init + exp = '000000' ). + + ENDMETHOD. + METHOD to_abap_value. DATA lo_cut TYPE REF TO lcl_json_to_abap. diff --git a/src/json/zif_abapgit_ajson.intf.abap b/src/json/zif_abapgit_ajson.intf.abap index aa2841651..f6ddde331 100644 --- a/src/json/zif_abapgit_ajson.intf.abap +++ b/src/json/zif_abapgit_ajson.intf.abap @@ -1,7 +1,7 @@ INTERFACE zif_abapgit_ajson PUBLIC. - CONSTANTS version TYPE string VALUE 'v1.1.9'. "#EC NOTEXT + CONSTANTS version TYPE string VALUE 'v1.1.10'. "#EC NOTEXT CONSTANTS origin TYPE string VALUE 'https://github.com/sbcgua/ajson'. "#EC NOTEXT CONSTANTS license TYPE string VALUE 'MIT'. "#EC NOTEXT