package net.w_horse.excelpojo.excel.reservedword;


/**
 * 予約語のインターフェース
 *
 * @author kawahara
 */
public abstract class ReservedWord {
	/**
	 * 変換対象となるキーワードを返す
	 *
	 * @return 変換対象となるキーワード
	 */
	public abstract String getKeyWord();
	protected abstract String getReplacement();

	/**
	 * 値設定用に予約語を変換した文字列を返す
	 *
	 * @param expr 変換対象
	 * @return 予約語を変換した文字列
	 */
	public String replace(String expr) {
		if (indexOf(expr) < 0) {
			return expr;	// 予約語が存在していないなら何もしない
		}

		return expr.replace(getKeyWord(), getReplacement());
	}

	/**
	 * 最初に見つかった予約語の検索結果を位置で返す
	 *
	 * @param expr 検索対象
	 * @return 見つかった位置
	 */
	public int indexOf(String expr) {
		return expr.indexOf(getKeyWord());
	}
}
