1

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. :)

OneCricketeer
  • 179,855
  • 19
  • 132
  • 245
DeepSidhu1313
  • 805
  • 15
  • 31

0 Answers0