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 RETURNING
VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_file_signatures_tt . VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_file_signatures_tt .
PROTECTED SECTION. 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. 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. ENDCLASS.
@ -243,9 +247,8 @@ CLASS ZCL_ABAPGIT_OBJECTS_FILES IMPLEMENTATION.
lv_filename = filename( iv_extra = iv_extra lv_filename = filename( iv_extra = iv_extra
iv_ext = 'abap' ). "#EC NOTEXT iv_ext = 'abap' ). "#EC NOTEXT
read_file( EXPORTING iv_filename = lv_filename lv_data = read_file( iv_filename = lv_filename
iv_error = iv_error iv_error = iv_error ).
IMPORTING ev_data = lv_data ).
IF lv_data IS INITIAL. " Post-handling of iv_error = false IF lv_data IS INITIAL. " Post-handling of iv_error = false
RETURN. RETURN.
@ -263,7 +266,6 @@ CLASS ZCL_ABAPGIT_OBJECTS_FILES IMPLEMENTATION.
FIELD-SYMBOLS: <ls_file> LIKE LINE OF mt_files, FIELD-SYMBOLS: <ls_file> LIKE LINE OF mt_files,
<ls_accessed> LIKE LINE OF mt_accessed_files. <ls_accessed> LIKE LINE OF mt_accessed_files.
CLEAR ev_data.
IF mv_path IS NOT INITIAL. IF mv_path IS NOT INITIAL.
READ TABLE mt_files ASSIGNING <ls_file> WITH KEY path = mv_path 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>. MOVE-CORRESPONDING <ls_file> TO <ls_accessed>.
ENDIF. ENDIF.
ev_data = <ls_file>-data. rv_data = <ls_file>-data.
ENDMETHOD. ENDMETHOD.
@ -300,8 +302,7 @@ CLASS ZCL_ABAPGIT_OBJECTS_FILES IMPLEMENTATION.
lv_filename = filename( iv_extra = iv_extra lv_filename = filename( iv_extra = iv_extra
iv_ext = iv_ext ). iv_ext = iv_ext ).
read_file( EXPORTING iv_filename = lv_filename rv_data = read_file( lv_filename ).
IMPORTING ev_data = rv_data ).
ENDMETHOD. ENDMETHOD.
@ -314,8 +315,7 @@ CLASS ZCL_ABAPGIT_OBJECTS_FILES IMPLEMENTATION.
lv_filename = filename( iv_extra = iv_extra lv_filename = filename( iv_extra = iv_extra
iv_ext = iv_ext ). "#EC NOTEXT iv_ext = iv_ext ). "#EC NOTEXT
read_file( EXPORTING iv_filename = lv_filename lv_data = read_file( lv_filename ).
IMPORTING ev_data = lv_data ).
rv_string = zcl_abapgit_convert=>xstring_to_string_utf8( lv_data ). 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 lv_filename = filename( iv_extra = iv_extra
iv_ext = 'xml' ). "#EC NOTEXT iv_ext = 'xml' ). "#EC NOTEXT
read_file( EXPORTING iv_filename = lv_filename lv_data = read_file( lv_filename ).
IMPORTING ev_data = lv_data ).
lv_xml = zcl_abapgit_convert=>xstring_to_string_utf8( lv_data ). 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. 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 rt_matches = super->parse_line( iv_line ).
IMPORTING et_matches = et_matches ).
" Remove non-keywords " 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. lv_index = sy-tabix.
IF abap_false = is_keyword( substring( val = iv_line IF abap_false = is_keyword( substring( val = iv_line
off = <ls_match>-offset off = <ls_match>-offset
len = <ls_match>-length ) ). len = <ls_match>-length ) ).
DELETE et_matches INDEX lv_index. DELETE rt_matches INDEX lv_index.
ENDIF. ENDIF.
ENDLOOP. ENDLOOP.

View File

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