import java.io.*;
import java.util.*;

public abstract class TokenReplacer extends Object { 
  protected final static String TOKENSTART = "<!--%";
  protected final static String TOKENEND = "%-->";

  public static String getNextToken(String line) {
    String r = null;

    int start = line.indexOf(TOKENSTART);
    if(start != -1) {
      int end = line.indexOf(TOKENEND, start);
      if(end != -1) {
	r = line.substring(start+TOKENSTART.length(), end);
      }
    }
    return r;
  }

  public static String chopToken(String token) {
    int s = token.indexOf(':');
    String r = null;
    if(s != -1)
      if(token.length() > s+1)
	r = new String(token.substring(s+1, token.length()));

    return r;
  }

  protected static String inPlaceReplace(String line, String oldText, String newText) {
    int start = line.indexOf(TOKENSTART + oldText + TOKENEND);
    return line.substring(0, start) + newText + line.substring(start+oldText.length()+TOKENSTART.length()+TOKENEND.length());
  }

  public abstract String replaceToken(String line, String token) throws IOException, TemplateReadException, APIException, InternalException, URLFileException;
}
