abapGit/src/json/zif_abapgit_ajson.intf.abap
2022-09-05 09:20:46 +02:00

257 lines
5.4 KiB
ABAP

INTERFACE zif_abapgit_ajson
PUBLIC.
CONSTANTS version TYPE string VALUE 'v1.1.6'. "#EC NOTEXT
CONSTANTS origin TYPE string VALUE 'https://github.com/sbcgua/ajson'. "#EC NOTEXT
CONSTANTS license TYPE string VALUE 'MIT'. "#EC NOTEXT
CONSTANTS:
BEGIN OF node_type,
boolean TYPE string VALUE 'bool',
string TYPE string VALUE 'str',
number TYPE string VALUE 'num',
null TYPE string VALUE 'null',
array TYPE string VALUE 'array',
object TYPE string VALUE 'object',
END OF node_type.
TYPES:
BEGIN OF ty_node,
path TYPE string,
name TYPE string,
type TYPE string,
value TYPE string,
index TYPE i,
order TYPE i,
children TYPE i,
END OF ty_node .
TYPES:
ty_nodes_tt TYPE STANDARD TABLE OF ty_node WITH KEY path name .
TYPES:
ty_nodes_ts TYPE SORTED TABLE OF ty_node
WITH UNIQUE KEY path name
WITH NON-UNIQUE SORTED KEY array_index COMPONENTS path index
WITH NON-UNIQUE SORTED KEY item_order COMPONENTS path order .
TYPES:
BEGIN OF ty_path_name,
path TYPE string,
name TYPE string,
END OF ty_path_name.
TYPES:
BEGIN OF ty_opts,
read_only TYPE abap_bool,
keep_item_order TYPE abap_bool,
format_datetime TYPE abap_bool,
END OF ty_opts.
" DATA
DATA mt_json_tree TYPE ty_nodes_ts READ-ONLY.
" METHODS
METHODS freeze.
METHODS keep_item_order
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson.
METHODS format_datetime
IMPORTING
iv_use_iso TYPE abap_bool DEFAULT abap_true
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson.
METHODS opts
RETURNING
VALUE(rs_opts) TYPE ty_opts.
" METHODS ex.reader
METHODS is_empty
RETURNING
VALUE(rv_yes) TYPE abap_bool.
METHODS exists
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_exists) TYPE abap_bool.
METHODS members
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rt_members) TYPE string_table.
METHODS get
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE string.
METHODS get_node_type
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_node_type) TYPE string.
METHODS get_boolean
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE abap_bool.
METHODS get_integer
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE i.
METHODS get_number
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE f.
METHODS get_date
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE d.
METHODS get_timestamp
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE timestamp.
METHODS get_string
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE string.
METHODS slice
IMPORTING
iv_path TYPE string
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson.
METHODS to_abap
EXPORTING
ev_container TYPE any
RAISING
zcx_abapgit_ajson_error.
METHODS array_to_string_table
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rt_string_table) TYPE string_table
RAISING
zcx_abapgit_ajson_error.
" METHODS ex.writer
METHODS clear
RAISING
zcx_abapgit_ajson_error.
METHODS set
IMPORTING
iv_path TYPE string
iv_val TYPE any
iv_ignore_empty TYPE abap_bool DEFAULT abap_true
iv_node_type TYPE string OPTIONAL
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
zcx_abapgit_ajson_error.
METHODS set_boolean
IMPORTING
iv_path TYPE string
iv_val TYPE any
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
zcx_abapgit_ajson_error.
METHODS set_string
IMPORTING
iv_path TYPE string
iv_val TYPE clike
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
zcx_abapgit_ajson_error.
METHODS set_integer
IMPORTING
iv_path TYPE string
iv_val TYPE i
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
zcx_abapgit_ajson_error.
METHODS set_date
IMPORTING
iv_path TYPE string
iv_val TYPE d
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
zcx_abapgit_ajson_error.
METHODS set_timestamp
IMPORTING
iv_path TYPE string
iv_val TYPE timestamp
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
zcx_abapgit_ajson_error.
METHODS set_null
IMPORTING
iv_path TYPE string
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
zcx_abapgit_ajson_error.
METHODS delete
IMPORTING
iv_path TYPE string
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
zcx_abapgit_ajson_error.
METHODS touch_array
IMPORTING
iv_path TYPE string
iv_clear TYPE abap_bool DEFAULT abap_false
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
zcx_abapgit_ajson_error.
METHODS push
IMPORTING
iv_path TYPE string
iv_val TYPE any
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
zcx_abapgit_ajson_error.
METHODS stringify
IMPORTING
iv_indent TYPE i DEFAULT 0
RETURNING
VALUE(rv_json) TYPE string
RAISING
zcx_abapgit_ajson_error.
ENDINTERFACE.