mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
Resolve circular reference in /syntax/ (#4292)
Closes #4258 Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
88372f0430
commit
07cdc0e0e8
46
src/syntax/zcl_abapgit_syntax_factory.clas.abap
Normal file
46
src/syntax/zcl_abapgit_syntax_factory.clas.abap
Normal file
|
@ -0,0 +1,46 @@
|
|||
CLASS zcl_abapgit_syntax_factory DEFINITION
|
||||
PUBLIC
|
||||
ABSTRACT
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
CLASS-METHODS create
|
||||
IMPORTING
|
||||
!iv_filename TYPE string
|
||||
!iv_hidden_chars TYPE abap_bool DEFAULT abap_false
|
||||
RETURNING
|
||||
VALUE(ro_instance) TYPE REF TO zcl_abapgit_syntax_highlighter .
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_syntax_factory IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD create.
|
||||
|
||||
" Create instance of highighter dynamically dependent on syntax type
|
||||
IF iv_filename CP '*.abap'.
|
||||
CREATE OBJECT ro_instance TYPE zcl_abapgit_syntax_abap.
|
||||
ELSEIF iv_filename CP '*.xml' OR iv_filename CP '*.html'.
|
||||
CREATE OBJECT ro_instance TYPE zcl_abapgit_syntax_xml.
|
||||
ELSEIF iv_filename CP '*.css'.
|
||||
CREATE OBJECT ro_instance TYPE zcl_abapgit_syntax_css.
|
||||
ELSEIF iv_filename CP '*.js'.
|
||||
CREATE OBJECT ro_instance TYPE zcl_abapgit_syntax_js.
|
||||
ELSEIF iv_filename CP '*.json'.
|
||||
CREATE OBJECT ro_instance TYPE zcl_abapgit_syntax_json.
|
||||
ELSEIF iv_filename CP '*.txt' OR iv_filename CP '*.ini' OR iv_filename CP '*.text'.
|
||||
CREATE OBJECT ro_instance TYPE zcl_abapgit_syntax_txt.
|
||||
ELSE.
|
||||
CLEAR ro_instance.
|
||||
ENDIF.
|
||||
|
||||
IF ro_instance IS BOUND.
|
||||
ro_instance->set_hidden_chars( iv_hidden_chars ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
16
src/syntax/zcl_abapgit_syntax_factory.clas.xml
Normal file
16
src/syntax/zcl_abapgit_syntax_factory.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>ZCL_ABAPGIT_SYNTAX_FACTORY</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abapGit - Syntax Highlighter Factory</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -5,17 +5,14 @@ CLASS zcl_abapgit_syntax_highlighter DEFINITION
|
|||
|
||||
PUBLIC SECTION.
|
||||
|
||||
CLASS-METHODS create
|
||||
IMPORTING
|
||||
!iv_filename TYPE string
|
||||
!iv_hidden_chars TYPE abap_bool DEFAULT abap_false
|
||||
RETURNING
|
||||
VALUE(ro_instance) TYPE REF TO zcl_abapgit_syntax_highlighter .
|
||||
METHODS process_line
|
||||
IMPORTING
|
||||
!iv_line TYPE string
|
||||
RETURNING
|
||||
VALUE(rv_line) TYPE string .
|
||||
METHODS set_hidden_chars
|
||||
IMPORTING
|
||||
!iv_hidden_chars TYPE abap_bool .
|
||||
PROTECTED SECTION.
|
||||
|
||||
TYPES:
|
||||
|
@ -78,9 +75,6 @@ CLASS zcl_abapgit_syntax_highlighter DEFINITION
|
|||
!iv_string TYPE string
|
||||
RETURNING
|
||||
VALUE(rv_result) TYPE abap_bool .
|
||||
METHODS set_hidden_chars
|
||||
IMPORTING
|
||||
!iv_hidden_chars TYPE abap_bool .
|
||||
METHODS show_hidden_chars
|
||||
IMPORTING
|
||||
!iv_line TYPE string
|
||||
|
@ -131,31 +125,6 @@ CLASS zcl_abapgit_syntax_highlighter IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD create.
|
||||
|
||||
" Create instance of highighter dynamically dependent on syntax type
|
||||
IF iv_filename CP '*.abap'.
|
||||
CREATE OBJECT ro_instance TYPE zcl_abapgit_syntax_abap.
|
||||
ELSEIF iv_filename CP '*.xml' OR iv_filename CP '*.html'.
|
||||
CREATE OBJECT ro_instance TYPE zcl_abapgit_syntax_xml.
|
||||
ELSEIF iv_filename CP '*.css'.
|
||||
CREATE OBJECT ro_instance TYPE zcl_abapgit_syntax_css.
|
||||
ELSEIF iv_filename CP '*.js'.
|
||||
CREATE OBJECT ro_instance TYPE zcl_abapgit_syntax_js.
|
||||
ELSEIF iv_filename CP '*.json'.
|
||||
CREATE OBJECT ro_instance TYPE zcl_abapgit_syntax_json.
|
||||
ELSEIF iv_filename CP '*.txt' OR iv_filename CP '*.ini' OR iv_filename CP '*.text'.
|
||||
CREATE OBJECT ro_instance TYPE zcl_abapgit_syntax_txt.
|
||||
ELSE.
|
||||
CLEAR ro_instance.
|
||||
ENDIF.
|
||||
|
||||
IF ro_instance IS BOUND.
|
||||
ro_instance->set_hidden_chars( iv_hidden_chars ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD extend_matches.
|
||||
|
||||
DATA: lv_line_len TYPE i,
|
||||
|
|
|
@ -59,7 +59,7 @@ CLASS ltcl_syntax_cases IMPLEMENTATION.
|
|||
lo_syntax TYPE REF TO zcl_abapgit_syntax_highlighter.
|
||||
|
||||
|
||||
lo_syntax = zcl_abapgit_syntax_highlighter=>create( iv_filename ).
|
||||
lo_syntax = zcl_abapgit_syntax_factory=>create( iv_filename ).
|
||||
lt_matches_act = lo_syntax->parse_line( iv_line ).
|
||||
|
||||
SORT lt_matches_act BY offset.
|
||||
|
@ -1290,7 +1290,7 @@ ENDCLASS.
|
|||
CLASS ltcl_syntax_basic_logic IMPLEMENTATION.
|
||||
|
||||
METHOD setup.
|
||||
mo_syntax_highlighter = zcl_abapgit_syntax_highlighter=>create( '*.abap' ).
|
||||
mo_syntax_highlighter = zcl_abapgit_syntax_factory=>create( '*.abap' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD format_line.
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<VSEOCLASS>
|
||||
<CLSNAME>ZCL_ABAPGIT_SYNTAX_HIGHLIGHTER</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Syntax highlighter</DESCRIPT>
|
||||
<DESCRIPT>abapGit - Syntax Highlighter</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
|
|
|
@ -23,7 +23,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_GUI_PAGE_DB_DIS IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_gui_page_db_dis IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
|
@ -50,7 +50,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DB_DIS IMPLEMENTATION.
|
|||
ENDTRY.
|
||||
|
||||
" Create syntax highlighter
|
||||
lo_highlighter = zcl_abapgit_syntax_highlighter=>create( '*.xml' ).
|
||||
lo_highlighter = zcl_abapgit_syntax_factory=>create( '*.xml' ).
|
||||
|
||||
ls_action-type = ms_key-type.
|
||||
ls_action-value = ms_key-value.
|
||||
|
|
|
@ -749,8 +749,8 @@ CLASS zcl_abapgit_gui_page_diff IMPLEMENTATION.
|
|||
|
||||
FIELD-SYMBOLS <ls_diff> LIKE LINE OF lt_diffs.
|
||||
|
||||
lo_highlighter = zcl_abapgit_syntax_highlighter=>create( iv_filename = is_diff-filename
|
||||
iv_hidden_chars = mv_hidden_chars ).
|
||||
lo_highlighter = zcl_abapgit_syntax_factory=>create( iv_filename = is_diff-filename
|
||||
iv_hidden_chars = mv_hidden_chars ).
|
||||
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
|
||||
|
||||
lt_diffs = is_diff-o_diff->get( ).
|
||||
|
|
|
@ -107,7 +107,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_GUI_PAGE_MERGE_RES IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_gui_page_merge_res IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD apply_merged_content.
|
||||
|
@ -351,7 +351,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_MERGE_RES IMPLEMENTATION.
|
|||
|
||||
FIELD-SYMBOLS <ls_diff> LIKE LINE OF lt_diffs.
|
||||
|
||||
lo_highlighter = zcl_abapgit_syntax_highlighter=>create( is_diff-filename ).
|
||||
lo_highlighter = zcl_abapgit_syntax_factory=>create( is_diff-filename ).
|
||||
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
|
||||
|
||||
lt_diffs = is_diff-o_diff->get( ).
|
||||
|
|
Loading…
Reference in New Issue
Block a user