Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Schindl2016-04-27 21:55:11 +0000
committerTom Schindl2016-04-27 21:55:11 +0000
commit3557bade43a950cd661fa68ef1efd69c4dfca48a (patch)
treed7614ea57b67df0f525edd51918705705ef88bc1
parent8947178fe72798c6d1d38e15e7faebf9aeec2053 (diff)
downloadorg.eclipse.efxclipse-3557bade43a950cd661fa68ef1efd69c4dfca48a.tar.gz
org.eclipse.efxclipse-3557bade43a950cd661fa68ef1efd69c4dfca48a.tar.xz
org.eclipse.efxclipse-3557bade43a950cd661fa68ef1efd69c4dfca48a.zip
adding a lead char pattern
-rw-r--r--bundles/code/org.eclipse.fx.text/src/org/eclipse/fx/text/rules/RegexRule.java14
1 files changed, 14 insertions, 0 deletions
diff --git a/bundles/code/org.eclipse.fx.text/src/org/eclipse/fx/text/rules/RegexRule.java b/bundles/code/org.eclipse.fx.text/src/org/eclipse/fx/text/rules/RegexRule.java
index c80cf7534..ff477b960 100644
--- a/bundles/code/org.eclipse.fx.text/src/org/eclipse/fx/text/rules/RegexRule.java
+++ b/bundles/code/org.eclipse.fx.text/src/org/eclipse/fx/text/rules/RegexRule.java
@@ -23,9 +23,15 @@ public class RegexRule implements IRule {
private final int startLength;
private final Pattern startPattern;
private final Pattern containmentPattern;
+ private final Pattern leadCharPattern;
public RegexRule(IToken token, Pattern startPattern, int startLength, Pattern containmentPattern) {
+ this(token, null, startPattern, startLength, containmentPattern);
+ }
+
+ public RegexRule(IToken token, Pattern leadCharPattern, Pattern startPattern, int startLength, Pattern containmentPattern) {
this.token = token;
+ this.leadCharPattern = leadCharPattern;
this.startLength = startLength;
this.startPattern = startPattern;
this.containmentPattern = containmentPattern;
@@ -33,6 +39,14 @@ public class RegexRule implements IRule {
@Override
public IToken evaluate(ICharacterScanner scanner) {
+ if( leadCharPattern != null && scanner.getColumn() > 0 ) {
+ scanner.unread();
+ int c = scanner.read();
+ if( ! leadCharPattern.matcher(String.valueOf((char)c)).matches() ) {
+ return Token.UNDEFINED;
+ }
+ }
+
StringBuilder b = new StringBuilder();
int readCount = 0;
for( int i = 0; i < startLength; i++ ) {

Back to the top