diff options
author | Tom Schindl | 2016-04-27 21:55:11 +0000 |
---|---|---|
committer | Tom Schindl | 2016-04-27 21:55:11 +0000 |
commit | 3557bade43a950cd661fa68ef1efd69c4dfca48a (patch) | |
tree | d7614ea57b67df0f525edd51918705705ef88bc1 | |
parent | 8947178fe72798c6d1d38e15e7faebf9aeec2053 (diff) | |
download | org.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.java | 14 |
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++ ) { |