/*
 * $Id: ExtendedXSLTHandler.java,v 1.1 2005/09/26 15:05:40 rampil Exp $
 * LOGICAL-PARADOX.ORG
 * Copyright (C)2005 satoshi akabane(akabane@logical-paradox.org)
 *
 */
package org.logical_paradox.kinako.logic;

import org.logical_paradox.kinako.constant.ApConstant;

/**
 * 拡張XSLTタグハンドラ
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.1 $
 */
public class ExtendedXSLTHandler {
	/** 強調表示タグ */
	private static final String[] emphasisTags =
		{
			ApConstant.XSLT_EMPHASIS_PTN_01, 
			ApConstant.XSLT_EMPHASIS_PTN_02, 
			ApConstant.XSLT_EMPHASIS_PTN_03, 
			ApConstant.XSLT_EMPHASIS_PTN_04, 
			ApConstant.XSLT_EMPHASIS_PTN_05, 
		};

	/**
	 * 指定キーワードを強調して返す．
	 * @param keyword キーワード(半角スペース区切り)
	 * @param msg メッセージ
	 * @return 変換されたメッセージ
	 */
	public static String emphasis(String keyword, String msg) {
		// 全角スペースを半角スペースに変換する
		String exprkeyword = keyword.trim().replaceAll("　"," ");
		// 半角スペースで区切る = 検索語の取得
		String[] keywords = exprkeyword.split(" ");

		String exprmsg = msg;

		// 検索語をそれぞれの強調タグに置き換える
		for(int i = 0; i < keywords.length; i++) {
			String em = emphasisTags[i >= emphasisTags.length ? emphasisTags.length-1 : i].replaceAll("%%KEYWORD%%", keywords[i]); 
			exprmsg = exprmsg.replaceAll(keywords[i], em);
		}

		return exprmsg;
	}
}
