package com.swabunga.spell.event;



/** This interface returns words.

 *  It also allows for the current word to be mutated

 *

 * @author Jason Height (jheight@chariot.net.au)

 */

public interface WordTokenizer {

  /** Returns true iif there are more words left*/

  public boolean hasMoreWords();

  /**Returns an index representing the start location in the original set of words*/

  public int getCurrentWordPosition();

  /**Returns an index representing the end location in the original set of words*/

  public int getCurrentWordEnd();



  /** Returns the next word token*/

  public String nextWord();

  /** Returns the number of word tokens that have been processed thus far*/

  public int getCurrentWordCount();

  /** Replaces the current word token

   * <p>When a word is replaced care should be taken that the WordTokenizer

   * repositions itself such that the words that were added arent rechecked. Of

   * course this is not mandatory, maybe there is a case when an application

   * doesnt need to do this.</p>

   */

  public void replaceWord(String newWord);

  /** Returns the context text that is being tokenized (should include any changes

   *  that have been made)

   */

  public String getContext();

  /** Returns true iif the current word is at the start of a sentance*/

  public boolean isNewSentance();

}