I am working on a text area which supports syntax highlighting (based on RichTextFX). As i was trying to create regex to highlight syntax of Diff files, i am unable to highlight more than one lines using ^
like this in
ADDITION_PATTERN = "^[\\+][^\n]*" ;
Here is the complete code of the class.
public class Diff implements Language {
@Override
public Pattern generatePattern() {
Pattern pattern;
String ADDITION_PATTERN;
ADDITION_PATTERN = "[\\+][^\n]*" ;
String REM_PATTERN;
REM_PATTERN = "[\\-][^\n]*";
String ADDITION_ALT_PATTERN;
ADDITION_ALT_PATTERN = "\\>[^\n]*";
String REM_ALT_PATTERN;
REM_ALT_PATTERN = "\\<[^\n]*";
String DIFF_PATTERN;
DIFF_PATTERN = "\\%[^\n]*";
String CHANGE_PATTERN;
CHANGE_PATTERN = "\\![^\n]*";
String COMMON_PATTERN="\\@[^\n]*";
pattern = Pattern.compile(
"(?<ADD>" + ADDITION_PATTERN + ")"
+ "|(?<REM>" + REM_PATTERN + ")"
+ "|(?<ADDALT>" + ADDITION_ALT_PATTERN + ")"
+ "|(?<REMALT>" + REM_ALT_PATTERN + ")"
+ "|(?<DIFF>" + DIFF_PATTERN + ")"
+ "|(?<CHANGE>" + CHANGE_PATTERN + ")"
+ "|(?<COMMON>" + COMMON_PATTERN + ")"
);
return pattern;
}
@Override
public String getStyleClass(Matcher matcher) {
return matcher.group("ADD") != null ? "add"
: matcher.group("REM") != null ? "rem"
: matcher.group("ADDALT") != null ? "add"
: matcher.group("REMALT") != null ? "rem"
: matcher.group("DIFF") != null ? "diff"
: matcher.group("CHANGE") != null ? "change"
: matcher.group("COMMON") != null ? "common"
: null;
}
@Override
public ArrayList<String> getKeywords() {
ArrayList<String> keywordList = new ArrayList<>();
Collections.sort(keywordList);
return keywordList;
}
}
Before passing any judgements, I am not a pro programmer still trying to learn things. :)