mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
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:
parent
f9318305e9
commit
5b6cc04159
|
@ -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 ).
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -23,51 +23,55 @@ CLASS zcl_abapgit_syntax_highlighter DEFINITION
|
|||
offset TYPE i, " Beginning position 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
|
||||
END OF ty_match.
|
||||
|
||||
END OF ty_match .
|
||||
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:
|
||||
BEGIN OF ty_rule,
|
||||
regex TYPE REF TO cl_abap_regex,
|
||||
token TYPE char1,
|
||||
style TYPE string,
|
||||
relevant_submatch TYPE i,
|
||||
END OF ty_rule.
|
||||
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 ).
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user