use RETURNING instead of EXPORTING (#2533)

* READ_FILE use returning instead of exporting

* PARSE_LINE, use returning instead of exporting
This commit is contained in:
Lars Hvam 2019-03-16 03:33:17 -07:00 committed by GitHub
parent f9318305e9
commit 5b6cc04159
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 67 additions and 69 deletions

View File

@ -80,23 +80,27 @@ CLASS zcl_abapgit_objects_files DEFINITION
RETURNING
VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_file_signatures_tt .
PROTECTED SECTION.
METHODS read_file
IMPORTING
!iv_filename TYPE string
!iv_error TYPE abap_bool DEFAULT abap_true
RETURNING
VALUE(rv_data) TYPE xstring
RAISING
zcx_abapgit_exception .
METHODS filename
IMPORTING
!iv_extra TYPE clike OPTIONAL
!iv_ext TYPE string
RETURNING
VALUE(rv_filename) TYPE string .
PRIVATE SECTION.
DATA: ms_item TYPE zif_abapgit_definitions=>ty_item,
mt_accessed_files TYPE zif_abapgit_definitions=>ty_file_signatures_tt,
mt_files TYPE zif_abapgit_definitions=>ty_files_tt,
mv_path TYPE string.
METHODS:
read_file
IMPORTING iv_filename TYPE string
iv_error TYPE abap_bool DEFAULT abap_true
EXPORTING ev_data TYPE xstring
RAISING zcx_abapgit_exception,
filename
IMPORTING iv_extra TYPE clike OPTIONAL
iv_ext TYPE string
RETURNING VALUE(rv_filename) TYPE string.
DATA ms_item TYPE zif_abapgit_definitions=>ty_item .
DATA mt_accessed_files TYPE zif_abapgit_definitions=>ty_file_signatures_tt .
DATA mt_files TYPE zif_abapgit_definitions=>ty_files_tt .
DATA mv_path TYPE string .
ENDCLASS.
@ -243,9 +247,8 @@ CLASS ZCL_ABAPGIT_OBJECTS_FILES IMPLEMENTATION.
lv_filename = filename( iv_extra = iv_extra
iv_ext = 'abap' ). "#EC NOTEXT
read_file( EXPORTING iv_filename = lv_filename
iv_error = iv_error
IMPORTING ev_data = lv_data ).
lv_data = read_file( iv_filename = lv_filename
iv_error = iv_error ).
IF lv_data IS INITIAL. " Post-handling of iv_error = false
RETURN.
@ -263,7 +266,6 @@ CLASS ZCL_ABAPGIT_OBJECTS_FILES IMPLEMENTATION.
FIELD-SYMBOLS: <ls_file> LIKE LINE OF mt_files,
<ls_accessed> LIKE LINE OF mt_accessed_files.
CLEAR ev_data.
IF mv_path IS NOT INITIAL.
READ TABLE mt_files ASSIGNING <ls_file> WITH KEY path = mv_path
@ -288,7 +290,7 @@ CLASS ZCL_ABAPGIT_OBJECTS_FILES IMPLEMENTATION.
MOVE-CORRESPONDING <ls_file> TO <ls_accessed>.
ENDIF.
ev_data = <ls_file>-data.
rv_data = <ls_file>-data.
ENDMETHOD.
@ -300,8 +302,7 @@ CLASS ZCL_ABAPGIT_OBJECTS_FILES IMPLEMENTATION.
lv_filename = filename( iv_extra = iv_extra
iv_ext = iv_ext ).
read_file( EXPORTING iv_filename = lv_filename
IMPORTING ev_data = rv_data ).
rv_data = read_file( lv_filename ).
ENDMETHOD.
@ -314,8 +315,7 @@ CLASS ZCL_ABAPGIT_OBJECTS_FILES IMPLEMENTATION.
lv_filename = filename( iv_extra = iv_extra
iv_ext = iv_ext ). "#EC NOTEXT
read_file( EXPORTING iv_filename = lv_filename
IMPORTING ev_data = lv_data ).
lv_data = read_file( lv_filename ).
rv_string = zcl_abapgit_convert=>xstring_to_string_utf8( lv_data ).
@ -331,8 +331,7 @@ CLASS ZCL_ABAPGIT_OBJECTS_FILES IMPLEMENTATION.
lv_filename = filename( iv_extra = iv_extra
iv_ext = 'xml' ). "#EC NOTEXT
read_file( EXPORTING iv_filename = lv_filename
IMPORTING ev_data = lv_data ).
lv_data = read_file( lv_filename ).
lv_xml = zcl_abapgit_convert=>xstring_to_string_utf8( lv_data ).

View File

@ -268,18 +268,17 @@ CLASS ZCL_ABAPGIT_SYNTAX_ABAP IMPLEMENTATION.
DATA lv_index TYPE i.
FIELD-SYMBOLS <ls_match> LIKE LINE OF et_matches.
FIELD-SYMBOLS <ls_match> LIKE LINE OF rt_matches.
super->parse_line( EXPORTING iv_line = iv_line
IMPORTING et_matches = et_matches ).
rt_matches = super->parse_line( iv_line ).
" Remove non-keywords
LOOP AT et_matches ASSIGNING <ls_match> WHERE token = c_token-keyword.
LOOP AT rt_matches ASSIGNING <ls_match> WHERE token = c_token-keyword.
lv_index = sy-tabix.
IF abap_false = is_keyword( substring( val = iv_line
off = <ls_match>-offset
len = <ls_match>-length ) ).
DELETE et_matches INDEX lv_index.
DELETE rt_matches INDEX lv_index.
ENDIF.
ENDLOOP.

View File

@ -24,10 +24,8 @@ CLASS zcl_abapgit_syntax_highlighter DEFINITION
length TYPE i, " Length of the string that should be formatted
text_tag TYPE string, " Type of text tag
END OF ty_match .
TYPES:
ty_match_tt TYPE STANDARD TABLE OF ty_match WITH DEFAULT KEY .
TYPES:
BEGIN OF ty_rule,
regex TYPE REF TO cl_abap_regex,
@ -36,38 +34,44 @@ CLASS zcl_abapgit_syntax_highlighter DEFINITION
relevant_submatch TYPE i,
END OF ty_rule .
CONSTANTS c_token_none TYPE c VALUE '.'.
DATA mt_rules TYPE STANDARD TABLE OF ty_rule.
CONSTANTS c_token_none TYPE c VALUE '.' ##NO_TEXT.
DATA:
mt_rules TYPE STANDARD TABLE OF ty_rule .
METHODS add_rule
IMPORTING
iv_regex TYPE string
iv_token TYPE c
iv_style TYPE string
iv_submatch TYPE i OPTIONAL.
!iv_regex TYPE string
!iv_token TYPE c
!iv_style TYPE string
!iv_submatch TYPE i OPTIONAL .
METHODS parse_line
IMPORTING iv_line TYPE string
EXPORTING et_matches TYPE ty_match_tt.
METHODS order_matches ABSTRACT
IMPORTING iv_line TYPE string
CHANGING ct_matches TYPE ty_match_tt.
IMPORTING
!iv_line TYPE string
RETURNING
VALUE(rt_matches) TYPE ty_match_tt .
METHODS order_matches
ABSTRACT
IMPORTING
!iv_line TYPE string
CHANGING
!ct_matches TYPE ty_match_tt .
METHODS extend_matches
IMPORTING iv_line TYPE string
CHANGING ct_matches TYPE ty_match_tt.
IMPORTING
!iv_line TYPE string
CHANGING
!ct_matches TYPE ty_match_tt .
METHODS format_line
IMPORTING iv_line TYPE string
it_matches TYPE ty_match_tt
RETURNING VALUE(rv_line) TYPE string.
IMPORTING
!iv_line TYPE string
!it_matches TYPE ty_match_tt
RETURNING
VALUE(rv_line) TYPE string .
METHODS apply_style
IMPORTING iv_line TYPE string
iv_class TYPE string
RETURNING VALUE(rv_line) TYPE string.
IMPORTING
!iv_line TYPE string
!iv_class TYPE string
RETURNING
VALUE(rv_line) TYPE string .
ENDCLASS.
@ -194,8 +198,6 @@ CLASS ZCL_ABAPGIT_SYNTAX_HIGHLIGHTER IMPLEMENTATION.
<ls_submatch> LIKE LINE OF <ls_result>-submatches.
CLEAR et_matches.
" Process syntax-dependent regex table and find all matches
LOOP AT mt_rules ASSIGNING <ls_regex>.
lo_regex = <ls_regex>-regex.
@ -209,7 +211,7 @@ CLASS ZCL_ABAPGIT_SYNTAX_HIGHLIGHTER IMPLEMENTATION.
ls_match-token = <ls_regex>-token.
ls_match-offset = <ls_result>-offset.
ls_match-length = <ls_result>-length.
APPEND ls_match TO et_matches.
APPEND ls_match TO rt_matches.
ELSE.
READ TABLE <ls_result>-submatches ASSIGNING <ls_submatch> INDEX <ls_regex>-relevant_submatch.
"submatch might be empty if only discarted parts matched
@ -217,7 +219,7 @@ CLASS ZCL_ABAPGIT_SYNTAX_HIGHLIGHTER IMPLEMENTATION.
ls_match-token = <ls_regex>-token.
ls_match-offset = <ls_submatch>-offset.
ls_match-length = <ls_submatch>-length.
APPEND ls_match TO et_matches.
APPEND ls_match TO rt_matches.
ENDIF.
ENDIF.
ENDLOOP.
@ -234,8 +236,7 @@ CLASS ZCL_ABAPGIT_SYNTAX_HIGHLIGHTER IMPLEMENTATION.
RETURN.
ENDIF.
me->parse_line( EXPORTING iv_line = iv_line
IMPORTING et_matches = lt_matches ).
lt_matches = me->parse_line( iv_line ).
me->order_matches( EXPORTING iv_line = iv_line
CHANGING ct_matches = lt_matches ).

View File

@ -71,8 +71,7 @@ CLASS ltcl_syntax_cases IMPLEMENTATION.
lo_syntax = zcl_abapgit_syntax_highlighter=>create( iv_filename ).
lo_syntax->parse_line( EXPORTING iv_line = iv_line
IMPORTING et_matches = lt_matches_act ).
lt_matches_act = lo_syntax->parse_line( iv_line ).
SORT lt_matches_act BY offset.