From 42f52990e5110d78a51b909b2dfd6b63c4a47e83 Mon Sep 17 00:00:00 2001 From: g-back <27279305+g-back@users.noreply.github.com> Date: Mon, 19 Oct 2020 15:20:17 +0200 Subject: [PATCH] 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 --- src/syntax/zcl_abapgit_syntax_abap.clas.abap | 51 +++++++++---------- ..._abapgit_syntax_abap.clas.testclasses.abap | 33 ++++++++++++ src/syntax/zcl_abapgit_syntax_abap.clas.xml | 1 + 3 files changed, 59 insertions(+), 26 deletions(-) create mode 100644 src/syntax/zcl_abapgit_syntax_abap.clas.testclasses.abap diff --git a/src/syntax/zcl_abapgit_syntax_abap.clas.abap b/src/syntax/zcl_abapgit_syntax_abap.clas.abap index 31922f256..1d11098b4 100644 --- a/src/syntax/zcl_abapgit_syntax_abap.clas.abap +++ b/src/syntax/zcl_abapgit_syntax_abap.clas.abap @@ -4,21 +4,20 @@ CLASS zcl_abapgit_syntax_abap DEFINITION CREATE PUBLIC . PUBLIC SECTION. - CLASS-METHODS class_constructor. METHODS constructor. CONSTANTS: BEGIN OF c_css, - keyword TYPE string VALUE 'keyword', "#EC NOTEXT - text TYPE string VALUE 'text', "#EC NOTEXT - comment TYPE string VALUE 'comment', "#EC NOTEXT + keyword TYPE string VALUE 'keyword', + text TYPE string VALUE 'text', + comment TYPE string VALUE 'comment', END OF c_css, BEGIN OF c_token, - keyword TYPE c VALUE 'K', "#EC NOTEXT - text TYPE c VALUE 'T', "#EC NOTEXT - comment TYPE c VALUE 'C', "#EC NOTEXT + keyword TYPE c VALUE 'K', + text TYPE c VALUE 'T', + comment TYPE c VALUE 'C', END OF c_token, BEGIN OF c_regex, @@ -44,7 +43,7 @@ ENDCLASS. -CLASS ZCL_ABAPGIT_SYNTAX_ABAP IMPLEMENTATION. +CLASS zcl_abapgit_syntax_abap IMPLEMENTATION. METHOD class_constructor. @@ -59,7 +58,6 @@ CLASS ZCL_ABAPGIT_SYNTAX_ABAP IMPLEMENTATION. super->constructor( ). " Initialize instances of regular expression - add_rule( iv_regex = c_regex-keyword iv_token = c_token-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' && '|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' && - '|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. + " 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 ENDMETHOD. diff --git a/src/syntax/zcl_abapgit_syntax_abap.clas.testclasses.abap b/src/syntax/zcl_abapgit_syntax_abap.clas.testclasses.abap new file mode 100644 index 000000000..a325acf54 --- /dev/null +++ b/src/syntax/zcl_abapgit_syntax_abap.clas.testclasses.abap @@ -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 = |REPORT zfoo.| + act = mo_cut->process_line( |REPORT zfoo.| ) ). + + ENDMETHOD. + + +ENDCLASS. diff --git a/src/syntax/zcl_abapgit_syntax_abap.clas.xml b/src/syntax/zcl_abapgit_syntax_abap.clas.xml index 9f080f715..23b288e86 100644 --- a/src/syntax/zcl_abapgit_syntax_abap.clas.xml +++ b/src/syntax/zcl_abapgit_syntax_abap.clas.xml @@ -10,6 +10,7 @@ X X X + X