feat(language): add ABAP programming language (@hottek) (#6784)

### Description

This PR adds language support for the ABAP programming language. It adds
code_abap with the 200 most used ABAP keywords and code_abap_1k with all
ABAP keywords from the current ABAP language version.

### Checks

- [x] Adding a language?
- Make sure to follow the [languages
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/LANGUAGES.md)
  - [x] Add language to `packages/schemas/src/languages.ts`
- [x] Add language to exactly one group in
`frontend/src/ts/constants/languages.ts`
  - [x] Add language json file to `frontend/static/languages` 
- [x] Check if any open issues are related to this PR; if so, be sure to
tag them below.
- [x] Make sure the PR title follows the Conventional Commits standard.
(https://www.conventionalcommits.org for more info)
- [x] Make sure to include your GitHub username prefixed with @ inside
parentheses at the end of the PR title.
This commit is contained in:
Lukas 2025-07-27 19:37:30 +02:00 committed by GitHub
parent 32ff95a2a7
commit 21230abaa4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 1326 additions and 0 deletions

View file

@ -353,6 +353,8 @@ export const LanguageGroups: Record<string, Language[]> = {
"code_common_lisp",
"code_odin",
"code_fortran",
"code_abap",
"code_abap_1k",
],
viossa: ["viossa", "viossa_njutro"],
};

View file

@ -0,0 +1,206 @@
{
"name": "code_abap",
"orderedByFrequency": true,
"words": [
"SELECT",
"FROM",
"WHERE",
"ENDSELECT",
"LOOP",
"ENDLOOP",
"IF",
"ENDIF",
"ELSE",
"ELSEIF",
"CASE",
"WHEN",
"ENDCASE",
"DO",
"ENDDO",
"WHILE",
"ENDWHILE",
"READ",
"WRITE",
"MOVE",
"APPEND",
"INSERT",
"DELETE",
"MODIFY",
"CLEAR",
"REFRESH",
"DESCRIBE",
"CHECK",
"CONTINUE",
"EXIT",
"STOP",
"RETURN",
"PERFORM",
"CALL",
"FUNCTION",
"MODULE",
"FORM",
"ENDFORM",
"TABLES",
"DATA",
"TYPES",
"CONSTANTS",
"FIELD-SYMBOLS",
"ASSIGN",
"UNASSIGN",
"RANGES",
"PARAMETERS",
"SELECT-OPTIONS",
"INCLUDE",
"STRUCTURE",
"BEGIN",
"END",
"OF",
"WITH",
"INTO",
"USING",
"VALUE",
"LIKE",
"TYPE",
"AS",
"EXPORTING",
"IMPORTING",
"CHANGING",
"RAISING",
"EXCEPTIONS",
"FIELDS",
"COMPONENTS",
"MESSAGE",
"SYNTAX-CHECK",
"AUTHORITY-CHECK",
"COMMIT",
"ROLLBACK",
"START-OF-SELECTION",
"END-OF-SELECTION",
"TOP-OF-PAGE",
"END-OF-PAGE",
"AT",
"NEW",
"ENDAT",
"SUM",
"COLLECT",
"SORT",
"BY",
"GROUP BY",
"ORDER BY",
"HAVING",
"DISTINCT",
"JOIN",
"LEFT",
"RIGHT",
"INNER",
"OUTER",
"ON",
"IN",
"NOT",
"AND",
"OR",
"BETWEEN",
"IS",
"NULL",
"EXISTS",
"UNION",
"INTERSECT",
"MINUS",
"ALL",
"ANY",
"SOME",
"COUNT",
"AVG",
"MIN",
"MAX",
"ABS",
"ROUND",
"CEIL",
"FLOOR",
"TRUNC",
"MOD",
"DIV",
"ADD",
"SUBTRACT",
"MULTIPLY",
"DIVIDE",
"CONCATENATE",
"CONDENSE",
"REPLACE",
"SPLIT",
"SHIFT",
"OVERLAY",
"STRLEN",
"FIND",
"SEARCH",
"TRANSLATE",
"UPPER",
"LOWER",
"CHARACTER",
"NUMERIC",
"DATE",
"TIME",
"TIMESTAMP",
"ZONE",
"CURRENCY",
"DECIMALS",
"PACKED",
"FLOAT",
"INTEGER",
"STRING",
"XSTRING",
"BYTE",
"FIELD-GROUPS",
"CHAIN",
"ENDCHAIN",
"ENDMODULE",
"EVENTS",
"CLASS",
"ENDCLASS",
"INTERFACE",
"ENDINTERFACE",
"METHOD",
"ENDMETHOD",
"PUBLIC",
"PRIVATE",
"PROTECTED",
"INHERITING",
"REDEFINITION",
"FINAL",
"ABSTRACT",
"CREATE",
"OBJECT",
"CASTING",
"TRY",
"CATCH",
"ENDTRY",
"RAISE",
"EXCEPTION",
"LOG-POINT",
"BREAK-POINT",
"REPORT",
"DEFINING",
"IMPLEMENTATION",
"ENDFUNCTION",
"FILTER",
"INITIALIZATION",
"FOR",
"TO",
"STEP",
"NEXT",
"INITIAL",
"OPEN",
"CLOSE",
"FETCH",
"CORRESPONDING",
"SELECTION-SCREEN",
"ENHANCEMENT",
"DATABASE",
"METHODS",
"INTERFACES",
"CONVERSION",
"DEFINITION",
"REFERENCE",
"SY-SUBRC"
]
}

File diff suppressed because it is too large Load diff

View file

@ -417,6 +417,8 @@ export const LanguageSchema = z.enum(
"code_fortran",
"viossa",
"viossa_njutro",
"code_abap",
"code_abap_1k",
],
{
errorMap: customEnumErrorHandler("Must be a supported language"),