mirror of
https://codeberg.org/gitnex/GitNex.git
synced 2023-12-13 20:50:18 +01:00
211fdab250
TODO - Issues of https://codeberg.org/gitnex-garage/useLangDefs https://codeberg.org/gitnex/GitNex/issues/1180 Also see https://codeberg.org/gitnex-garage/useLangDefs Co-authored-by: qwerty287 <ndev@web.de> Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/1196 Reviewed-by: M M Arif <mmarif@noreply.codeberg.org> Co-authored-by: qwerty287 <qwerty287@noreply.codeberg.org> Co-committed-by: qwerty287 <qwerty287@noreply.codeberg.org>
169 lines
3.6 KiB
Java
169 lines
3.6 KiB
Java
package org.mian.gitnex.helpers.codeeditor.languages;
|
|
|
|
import com.amrdeveloper.codeview.Code;
|
|
import com.amrdeveloper.codeview.Keyword;
|
|
import java.util.ArrayList;
|
|
import java.util.HashSet;
|
|
import java.util.List;
|
|
import java.util.Set;
|
|
import java.util.regex.Pattern;
|
|
|
|
/**
|
|
* @author qwerty287
|
|
*/
|
|
public class JavaScriptLanguage extends Language {
|
|
|
|
private static final Pattern PATTERN_BUILTINS = Pattern.compile("[,:;[->]{}()]");
|
|
private static final Pattern PATTERN_SINGLE_LINE_COMMENT = Pattern.compile("//[^\\n]*");
|
|
private static final Pattern PATTERN_MULTI_LINE_COMMENT =
|
|
Pattern.compile("/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/");
|
|
private static final Pattern PATTERN_ATTRIBUTE = Pattern.compile("\\.[a-zA-Z0-9_]+");
|
|
private static final Pattern PATTERN_OPERATION =
|
|
Pattern.compile(
|
|
":|==|>|<|!=|>=|<=|->|=|>|<|%|-|-=|%=|\\+|\\-|\\-=|\\+=|\\^|\\&|\\|::|\\?|\\*");
|
|
private static final Pattern PATTERN_TODO_COMMENT =
|
|
Pattern.compile("//\\s?(TODO|todo)\\s[^\n]*");
|
|
private static final Pattern PATTERN_NUMBERS = Pattern.compile("\\b(\\d*[.]?\\d+)\\b");
|
|
private static final Pattern PATTERN_CHAR = Pattern.compile("['](.*?)[']");
|
|
private static final Pattern PATTERN_STRING = Pattern.compile("[\"](.*?)[\"]");
|
|
private static final Pattern PATTERN_HEX = Pattern.compile("0x[0-9a-fA-F]+");
|
|
|
|
public static String getCommentStart() {
|
|
return "//";
|
|
}
|
|
|
|
public static String getCommentEnd() {
|
|
return "";
|
|
}
|
|
|
|
@Override
|
|
public Pattern getPattern(LanguageElement element) {
|
|
switch (element) {
|
|
case KEYWORD:
|
|
return Pattern.compile("\\b(" + String.join("|", getKeywords()) + ")\\b");
|
|
case BUILTIN:
|
|
return PATTERN_BUILTINS;
|
|
case NUMBER:
|
|
return PATTERN_NUMBERS;
|
|
case CHAR:
|
|
return PATTERN_CHAR;
|
|
case STRING:
|
|
return PATTERN_STRING;
|
|
case HEX:
|
|
return PATTERN_HEX;
|
|
case SINGLE_LINE_COMMENT:
|
|
return PATTERN_SINGLE_LINE_COMMENT;
|
|
case MULTI_LINE_COMMENT:
|
|
return PATTERN_MULTI_LINE_COMMENT;
|
|
case ATTRIBUTE:
|
|
return PATTERN_ATTRIBUTE;
|
|
case OPERATION:
|
|
return PATTERN_OPERATION;
|
|
case TODO_COMMENT:
|
|
return PATTERN_TODO_COMMENT;
|
|
case ANNOTATION:
|
|
case GENERIC:
|
|
default:
|
|
return null;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public String[] getKeywords() {
|
|
return new String[] {
|
|
"abstract",
|
|
"arguments",
|
|
"boolean",
|
|
"break",
|
|
"byte",
|
|
"case",
|
|
"catch",
|
|
"char",
|
|
"const",
|
|
"continue",
|
|
"debugger",
|
|
"default",
|
|
"delete",
|
|
"do",
|
|
"double",
|
|
"else",
|
|
"eval",
|
|
"false",
|
|
"final",
|
|
"finally",
|
|
"float",
|
|
"for",
|
|
"function",
|
|
"goto",
|
|
"if",
|
|
"implements",
|
|
"in",
|
|
"instanceof",
|
|
"int",
|
|
"interface",
|
|
"let",
|
|
"long",
|
|
"native",
|
|
"new",
|
|
"null",
|
|
"package",
|
|
"private",
|
|
"protected",
|
|
"public",
|
|
"return",
|
|
"short",
|
|
"static",
|
|
"switch",
|
|
"synchronized",
|
|
"this",
|
|
"throw",
|
|
"throws",
|
|
"transient",
|
|
"true",
|
|
"try",
|
|
"typeof",
|
|
"var",
|
|
"void",
|
|
"volatile",
|
|
"while",
|
|
"with",
|
|
"yield",
|
|
"class",
|
|
"enum",
|
|
"export",
|
|
"extends",
|
|
"import",
|
|
"super"
|
|
};
|
|
}
|
|
|
|
@Override
|
|
public List<Code> getCodeList() {
|
|
List<Code> codeList = new ArrayList<>();
|
|
String[] keywords = getKeywords();
|
|
for (String keyword : keywords) {
|
|
codeList.add(new Keyword(keyword));
|
|
}
|
|
return codeList;
|
|
}
|
|
|
|
@Override
|
|
public String getName() {
|
|
return "JavaScript";
|
|
}
|
|
|
|
@Override
|
|
public Set<Character> getIndentationStarts() {
|
|
Set<Character> characterSet = new HashSet<>();
|
|
characterSet.add('{');
|
|
return characterSet;
|
|
}
|
|
|
|
@Override
|
|
public Set<Character> getIndentationEnds() {
|
|
Set<Character> characterSet = new HashSet<>();
|
|
characterSet.add('}');
|
|
return characterSet;
|
|
}
|
|
}
|