J avolution v5.3 (J2SE 1.5+)

javolution.text
Class Cursor

java.lang.Object
  extended by java.text.ParsePosition
      extended by javolution.text.Cursor
All Implemented Interfaces:
Reusable

public class Cursor
extends java.text.ParsePosition
implements Reusable

This class represents a parsing cursor over characters. Cursor allows for token iterations over any CharSequence.

       CharSequence csq = "this is a test";
       for (Cursor cursor = new Cursor(); cursor.skip(CharSet.WHITESPACES, csq);) {
           System.out.println(cursor.nextToken(csq, CharSet.WHITESPACES));
       }
Prints the following output:
        this
        is
        a
        test
Cursors are typically used with TextFormat instances.
        public Font parse(CharSequence csq, Cursor cursor) {
            CharSequence fontName = cursor.nextToken(csq, CharSet.WHITESPACE);
            return Font.decode(fontName.toString());
        }

Version:
5.3, February 15, 2006
Author:
Jean-Marie Dautelle

Constructor Summary
Cursor()
          Default constructor.
 
Method Summary
 boolean equals(java.lang.Object obj)
          Indicates if this cursor is equals to the specified object.
 int getIndex()
          Returns this cursor index.
 int hashCode()
          Returns the hash code for this cursor.
 boolean hasNext(java.lang.CharSequence csq)
          Indicates if this cursor points to a valid character in the specified character sequence.
 Cursor increment()
          Increments the cursor index by one.
 Cursor increment(int i)
          Increments the cursor index by the specified value.
 char next(java.lang.CharSequence csq)
          Returns the next character at this cursor position.
 java.lang.CharSequence nextToken(java.lang.CharSequence csq, char c)
          Returns the subsequence from the specified cursor position not holding the specified character.
 java.lang.CharSequence nextToken(java.lang.CharSequence csq, CharSet charSet)
          Returns the subsequence from the specified cursor position not holding any of the characters specified.
 void reset()
          Resets this cursor instance.
 void setIndex(int i)
          Sets the cursor current index.
 boolean skip(char c, java.lang.CharSequence csq)
          Moves this cursor forward until it points to a character different from the specified character.
 boolean skip(CharSet charSet, java.lang.CharSequence csq)
          Moves this cursor forward until it points to a character different from any of the character in the specified set.
 java.lang.String toString()
          Returns the string representation of this cursor.
 
Methods inherited from class java.text.ParsePosition
getErrorIndex, setErrorIndex
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Cursor

public Cursor()
Default constructor.

Method Detail

getIndex

public final int getIndex()
Returns this cursor index.

Overrides:
getIndex in class java.text.ParsePosition
Returns:
the index of the next character to parse.

setIndex

public void setIndex(int i)
Sets the cursor current index.

Overrides:
setIndex in class java.text.ParsePosition
Parameters:
i - the index of the next character to parse.

hasNext

public final boolean hasNext(java.lang.CharSequence csq)
Indicates if this cursor points to a valid character in the specified character sequence.

Parameters:
csq - the character sequence iterated by this cursor.
Returns:
true if this cursor points to a valid character position; false otherwise.

next

public final char next(java.lang.CharSequence csq)
Returns the next character at this cursor position. The cursor position is incremented by one.

Parameters:
csq - the character sequence iterated by this cursor.
Returns:
this cursor points to a valid character; false otherwise.
Throws:
java.lang.IndexOutOfBoundsException - if !hasNext(csq)

skip

public final boolean skip(char c,
                          java.lang.CharSequence csq)
Moves this cursor forward until it points to a character different from the specified character.

Parameters:
c - the character to skip.
csq - the character sequence iterated by this cursor.
Returns:
true if this cursor points to a character different from the ones specified; false otherwise (end of sequence reached).

skip

public final boolean skip(CharSet charSet,
                          java.lang.CharSequence csq)
Moves this cursor forward until it points to a character different from any of the character in the specified set. For example:
  // Reads numbers separated by tabulations or spaces.
  FastTable<Integer> numbers = new FastTable<Integer>();
  while (cursor.skip(CharSet.SPACE_OR_TAB, csq)) {
      numbers.add(TypeFormat.parseInt(csq, cursor));
  }

Parameters:
charSet - the character to skip.
csq - the character sequence iterated by this cursor.
Returns:
true if this cursor points to a character different from the ones specified; false otherwise (e.g. end of sequence reached).

nextToken

public final java.lang.CharSequence nextToken(java.lang.CharSequence csq,
                                              char c)
Returns the subsequence from the specified cursor position not holding the specified character. For example:
    CharSequence csq = "This is a test";
    for (CharSequence token; (token=cursor.nextToken(csq, ' '))!= null;) {
        System.out.println(token); // Prints one word at a time.
    }

Parameters:
csq - the character sequence iterated by this cursor.
c - the character being skipped.
Returns:
the subsequence not holding the specified character or null if none.

nextToken

public final java.lang.CharSequence nextToken(java.lang.CharSequence csq,
                                              CharSet charSet)
Returns the subsequence from the specified cursor position not holding any of the characters specified. For example:
    CharSequence csq = "This is a test";
    for (CharSequence token; (token=cursor.nextToken(csq, CharSet.WHITESPACE))!= null;) {
        System.out.println(token); // Prints one word at a time.
    }

Parameters:
csq - the character sequence iterated by this cursor.
charSet - the characters being skipped.
Returns:
the subsequence not holding the specified character or null if none.

increment

public final Cursor increment()
Increments the cursor index by one.

Returns:
this

increment

public final Cursor increment(int i)
Increments the cursor index by the specified value.

Parameters:
i - the increment value.
Returns:
this

toString

public java.lang.String toString()
Returns the string representation of this cursor.

Overrides:
toString in class java.text.ParsePosition
Returns:
the index value as a string.

equals

public boolean equals(java.lang.Object obj)
Indicates if this cursor is equals to the specified object.

Overrides:
equals in class java.text.ParsePosition
Returns:
true if the specified object is a cursor at the same index; false otherwise.

hashCode

public int hashCode()
Returns the hash code for this cursor.

Overrides:
hashCode in class java.text.ParsePosition
Returns:
the hash code value for this object

reset

public void reset()
Resets this cursor instance.

Specified by:
reset in interface Reusable
See Also:
Reusable

J avolution v5.3 (J2SE 1.5+)

Copyright © 2005 - 2009 Javolution.