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();
     }