Mercurial > projects > dwt-addons
diff dwtx/jface/text/rules/WordPatternRule.d @ 162:1a5b8f8129df
...
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Mon, 08 Sep 2008 00:51:37 +0200 |
parents | 51e6e63f930e |
children | eb98a5cbfd78 |
line wrap: on
line diff
--- a/dwtx/jface/text/rules/WordPatternRule.d Wed Aug 27 14:49:30 2008 +0200 +++ b/dwtx/jface/text/rules/WordPatternRule.d Mon Sep 08 00:51:37 2008 +0200 @@ -56,7 +56,7 @@ /** The word detector used by this rule */ protected IWordDetector fDetector; /** The internal buffer used for pattern detection */ - private StringBuffer fBuffer= new StringBuffer(); + private StringBuffer fBuffer; /** * Creates a rule for the given starting and ending word @@ -86,8 +86,9 @@ * @param escapeCharacter the escape character */ public this(IWordDetector detector, String startSequence, String endSequence, IToken token, char escapeCharacter) { + fBuffer= new StringBuffer(); super(startSequence, endSequence, token, escapeCharacter); - Assert.isNotNull(detector); + Assert.isNotNull(cast(Object)detector); fDetector= detector; } @@ -101,17 +102,17 @@ * @return <code>true</code> if the word ends on the given end sequence */ protected bool endSequenceDetected(ICharacterScanner scanner) { - fBuffer.setLength(0); + fBuffer.truncate(0); int c= scanner.read(); - while (fDetector.isWordPart(cast(wchar) c)) { - fBuffer.append(cast(wchar) c); + while (fDetector.isWordPart(cast(char) c)) { + fBuffer.append(cast(char) c); c= scanner.read(); } scanner.unread(); if (fBuffer.length() >= fEndSequence.length) { for (int i=fEndSequence.length - 1, j= fBuffer.length() - 1; i >= 0; i--, j--) { - if (fEndSequence[i] !is fBuffer.charAt(j)) { + if (fEndSequence[i] !is fBuffer.slice()[j]) { unreadBuffer(scanner); return false; } @@ -131,7 +132,8 @@ * @param scanner the scanner to be used */ protected void unreadBuffer(ICharacterScanner scanner) { - fBuffer.insert(0, fStartSequence); + fBuffer.select(0, 0 ); + fBuffer.replace(fStartSequence); for (int i= fBuffer.length() - 1; i > 0; i--) scanner.unread(); }