mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
ABAP Syntax Highligher: Re-Add New Keywords (#4047)
* add minimal unit test * readd new keywords to abap syntax highlighter - removed duplicates from keywords - removed deprecated pseudo comment - explicitly remove duplicates from keywords to avoid needless dumps Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
7ffb4ff91d
commit
42f52990e5
|
@ -4,21 +4,20 @@ CLASS zcl_abapgit_syntax_abap DEFINITION
|
||||||
CREATE PUBLIC .
|
CREATE PUBLIC .
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
|
||||||
CLASS-METHODS class_constructor.
|
CLASS-METHODS class_constructor.
|
||||||
METHODS constructor.
|
METHODS constructor.
|
||||||
|
|
||||||
CONSTANTS:
|
CONSTANTS:
|
||||||
BEGIN OF c_css,
|
BEGIN OF c_css,
|
||||||
keyword TYPE string VALUE 'keyword', "#EC NOTEXT
|
keyword TYPE string VALUE 'keyword',
|
||||||
text TYPE string VALUE 'text', "#EC NOTEXT
|
text TYPE string VALUE 'text',
|
||||||
comment TYPE string VALUE 'comment', "#EC NOTEXT
|
comment TYPE string VALUE 'comment',
|
||||||
END OF c_css,
|
END OF c_css,
|
||||||
|
|
||||||
BEGIN OF c_token,
|
BEGIN OF c_token,
|
||||||
keyword TYPE c VALUE 'K', "#EC NOTEXT
|
keyword TYPE c VALUE 'K',
|
||||||
text TYPE c VALUE 'T', "#EC NOTEXT
|
text TYPE c VALUE 'T',
|
||||||
comment TYPE c VALUE 'C', "#EC NOTEXT
|
comment TYPE c VALUE 'C',
|
||||||
END OF c_token,
|
END OF c_token,
|
||||||
|
|
||||||
BEGIN OF c_regex,
|
BEGIN OF c_regex,
|
||||||
|
@ -44,7 +43,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS ZCL_ABAPGIT_SYNTAX_ABAP IMPLEMENTATION.
|
CLASS zcl_abapgit_syntax_abap IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD class_constructor.
|
METHOD class_constructor.
|
||||||
|
@ -59,7 +58,6 @@ CLASS ZCL_ABAPGIT_SYNTAX_ABAP IMPLEMENTATION.
|
||||||
super->constructor( ).
|
super->constructor( ).
|
||||||
|
|
||||||
" Initialize instances of regular expression
|
" Initialize instances of regular expression
|
||||||
|
|
||||||
add_rule( iv_regex = c_regex-keyword
|
add_rule( iv_regex = c_regex-keyword
|
||||||
iv_token = c_token-keyword
|
iv_token = c_token-keyword
|
||||||
iv_style = c_css-keyword ).
|
iv_style = c_css-keyword ).
|
||||||
|
@ -176,26 +174,27 @@ CLASS ZCL_ABAPGIT_SYNTAX_ABAP IMPLEMENTATION.
|
||||||
'|UNWIND|UP|UPDATE|UPPER|USER|USER-COMMAND|USING|UTF-8|VALID|VALUE|VALUE-REQUEST|VALUES' &&
|
'|UNWIND|UP|UPDATE|UPPER|USER|USER-COMMAND|USING|UTF-8|VALID|VALUE|VALUE-REQUEST|VALUES' &&
|
||||||
'|VARY|VARYING|VERIFICATION-MESSAGE|VERSION|VIA|VIEW|VISIBLE|WAIT|WARNING|WHEN|WHENEVER' &&
|
'|VARY|VARYING|VERIFICATION-MESSAGE|VERSION|VIA|VIEW|VISIBLE|WAIT|WARNING|WHEN|WHENEVER' &&
|
||||||
'|WHERE|WHILE|WIDTH|WINDOW|WINDOWS|WITH|WITH-HEADING|WITHOUT|WITH-TITLE|WORD|WORK' &&
|
'|WHERE|WHILE|WIDTH|WINDOW|WINDOWS|WITH|WITH-HEADING|WITHOUT|WITH-TITLE|WORD|WORK' &&
|
||||||
'|WRITE|WRITER|X|XML|XSD|XSTRLEN|YELLOW|YES|YYMMDD|Z|ZERO|ZONE'.
|
'|WRITE|WRITER|X|XML|XSD|XSTRLEN|YELLOW|YES|YYMMDD|Z|ZERO|ZONE' &&
|
||||||
|
'|BINTOHEX|CHAR|CLNT|CONCAT_WITH_SPACE|CURR|DATS|DATS_ADD_DAYS|DATS_ADD_MONTHS' &&
|
||||||
|
'|DATS_DAYS_BETWEEN|DATS_IS_VALID|DEC|END-OF-EDITING|END-TEST-INJECTION|END-TEST-SEAM' &&
|
||||||
|
'|ENDWITH|ENUM|HEXTOBIN|INSTANCE|INSTR|LANG|LTRIM|NUMC|PUSH' &&
|
||||||
|
'|QUAN|RETURNS|RPAD|RTRIM|SSTRING|START-OF-EDITING|TEST-INJECTION|TEST-SEAM|TIMS' &&
|
||||||
|
'|TIMS_IS_VALID|TSTMP_ADD_SECONDS|TSTMP_CURRENT_UTCTIMESTAMP|TSTMP_IS_VALID' &&
|
||||||
|
'|TSTMP_SECONDS_BETWEEN|B|D|DECFLOAT16|DECFLOAT34|F|INT8|N|P|S|STRING|T|UTCLONG|XSTRING' &&
|
||||||
|
'|ABAP_BOOL|ACCP|CUKY|DF16_DEC|DF16_RAW|DF34_DEC|DF34_RAW|FLTP' &&
|
||||||
|
'|INT1|INT2|INT4|LCHR|LRAW|RAWSTRING|DF16_SCL|DF34_SCL' &&
|
||||||
|
'|PREC|VARC|CLIKE|CSEQUENCE|DECFLOAT|NUMERIC|XSEQUENCE|ME|SYST|SY' &&
|
||||||
|
'|BIT-SET|BOOLC|BOOLX|CHAR_OFF|CMAX|CMIN|CONCAT_LINES_OF|CONTAINS|CONTAINS_ANY_NOT_OF' &&
|
||||||
|
'|CONTAINS_ANY_OF|COUNT_ANY_NOT_OF|COUNT_ANY_OF|FIND_ANY_NOT_OF|FIND_ANY_OF|FIND_END' &&
|
||||||
|
'|FROM_MIXED|IPOW|LINE_EXISTS|LINE_INDEX|MATCHES|NMAX|NMIN|REPEAT|RESCALE|REVERSE' &&
|
||||||
|
'|SEGMENT|SHIFT_LEFT|SHIFT_RIGHT|SUBSTRING_AFTER|SUBSTRING_BEFORE|SUBSTRING_FROM|SUBSTRING_TO' &&
|
||||||
|
'|TO_LOWER|TO_MIXED|TO_UPPER|UTCLONG_ADD|UTCLONG_CURRENT|UTCLONG_DIFF|XSDBOOL'.
|
||||||
|
|
||||||
* &&
|
|
||||||
* '|BINTOHEX|CHAR|CLNT|CONCAT_WITH_SPACE|CUKY|CURR|DATS|DATS_ADD_DAYS|DATS_ADD_MONTHS' &&
|
|
||||||
* '|DATS_DAYS_BETWEEN|DATS_IS_VALID|DEC|END-OF-EDITING|END-TEST-INJECTION|END-TEST-SEAM' &&
|
|
||||||
* '|ENDWITH|ENUM|FLTP|HEXTOBIN|INSTANCE|INSTR|INT1|INT2|INT4|INT8|LANG|LTRIM|NUMC|PUSH' &&
|
|
||||||
* '|QUAN|RETURNS|RPAD|RTRIM|SSTRING|START-OF-EDITING|TEST-INJECTION|TEST-SEAM|TIMS' &&
|
|
||||||
* '|TIMS_IS_VALID|TSTMP_ADD_SECONDS|TSTMP_CURRENT_UTCTIMESTAMP|TSTMP_IS_VALID' &&
|
|
||||||
* '|TSTMP_SECONDS_BETWEEN|B|D|DECFLOAT16|DECFLOAT34|F|INT8|N|P|S|STRING|T|UTCLONG|XSTRING' &&
|
|
||||||
* '|ABAP_BOOL|ACCP|CHAR|CLNT|CUKY|CURR|DATS|DEC|DF16_DEC|DF16_RAW|DF34_DEC|DF34_RAW|FLTP' &&
|
|
||||||
* '|INT1|INT2|INT4|INT8|LANG|LCHR|LRAW|NUMC|QUAN|RAWSTRING|SSTRING|TIMS|DF16_SCL|DF34_SCL' &&
|
|
||||||
* '|PREC|VARC|CLIKE|CSEQUENCE|DECFLOAT|NUMERIC|XSEQUENCE|ME|SYST|SY' &&
|
|
||||||
* '|BIT-SET|BOOLC|BOOLX|CHAR_OFF|CMAX|CMIN|CONCAT_LINES_OF|CONTAINS|CONTAINS_ANY_NOT_OF' &&
|
|
||||||
* '|CONTAINS_ANY_OF|COUNT_ANY_NOT_OF|COUNT_ANY_OF|FIND_ANY_NOT_OF|FIND_ANY_OF|FIND_END' &&
|
|
||||||
* '|FROM_MIXED|IPOW|LINE_EXISTS|LINE_INDEX|MATCHES|NMAX|NMIN|REPEAT|RESCALE|REVERSE' &&
|
|
||||||
* '|SEGMENT|SHIFT_LEFT|SHIFT_RIGHT|SUBSTRING_AFTER|SUBSTRING_BEFORE|SUBSTRING_FROM' &&
|
|
||||||
* '|SUBSTRING_TO|TO_LOWER|TO_MIXED|TO_UPPER|UTCLONG_ADD|UTCLONG_CURRENT|UTCLONG_DIFF' &&
|
|
||||||
* '|XSDBOOL'.
|
|
||||||
|
|
||||||
SPLIT lv_keywords AT '|' INTO TABLE lt_keywords.
|
SPLIT lv_keywords AT '|' INTO TABLE lt_keywords.
|
||||||
|
" remove duplicates to avoid dumps when converting to a hash table
|
||||||
|
SORT lt_keywords BY table_line ASCENDING.
|
||||||
|
DELETE ADJACENT DUPLICATES FROM lt_keywords.
|
||||||
gt_keywords = lt_keywords. " Hash table
|
gt_keywords = lt_keywords. " Hash table
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
33
src/syntax/zcl_abapgit_syntax_abap.clas.testclasses.abap
Normal file
33
src/syntax/zcl_abapgit_syntax_abap.clas.testclasses.abap
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
CLASS ltcl_abapgit_syntax_abap DEFINITION FINAL FOR TESTING
|
||||||
|
DURATION SHORT
|
||||||
|
RISK LEVEL HARMLESS.
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
DATA:
|
||||||
|
mo_cut TYPE REF TO zcl_abapgit_syntax_abap.
|
||||||
|
|
||||||
|
METHODS:
|
||||||
|
setup,
|
||||||
|
report_header FOR TESTING RAISING cx_static_check.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
CLASS ltcl_abapgit_syntax_abap IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD setup.
|
||||||
|
|
||||||
|
CREATE OBJECT mo_cut.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD report_header.
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
exp = |<span class="keyword">REPORT</span> zfoo.|
|
||||||
|
act = mo_cut->process_line( |REPORT zfoo.| ) ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
ENDCLASS.
|
|
@ -10,6 +10,7 @@
|
||||||
<CLSCCINCL>X</CLSCCINCL>
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
<FIXPT>X</FIXPT>
|
<FIXPT>X</FIXPT>
|
||||||
<UNICODE>X</UNICODE>
|
<UNICODE>X</UNICODE>
|
||||||
|
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||||
</VSEOCLASS>
|
</VSEOCLASS>
|
||||||
</asx:values>
|
</asx:values>
|
||||||
</asx:abap>
|
</asx:abap>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user