package org.itscool.stylist.io;

import org.itscool.commons.bean.BeanFactory;
import org.itscool.commons.collection.InitParamMap;
import org.itscool.commons.util.URLDecodeUtil;
import org.itscool.stylist.el.LayoutRegex;

import org.itscool.stylist.tag.HtmlTag;

/**
 * XHTMLに含まれるテキスト情報を応答データに変換します
 * @author kano
 * @version 1.00A 2006/08/09 新規作成
 */
public class HtmlTextConverter extends HtmlConverter {
    
    /**
     * 応答用のXHTMLデータの作成を開始します
     * @param node HtmlTagインスタンス
     * @return 応答データ
     */
    public String convert(HtmlTag node, String tab) {
        StringBuffer sb = new StringBuffer(tab);
        
//modify 2007/03/17 kano start
        String convStr = node.getTagName();
        BeanFactory factory = BeanFactory.getInstance();
        InitParamMap params = (InitParamMap)factory.getInstance("InitParams");
        LayoutRegex regex = new LayoutRegex(context, req);
//        //./で始まるパスをWebアプリケーションからの論理パスに変換
//        convStr = regex.replacePath(convStr);
        //Functionを展開する
        String orgPkg = params.getParam("pkgName");
        convStr = regex.replaceFunction(orgPkg, convStr);
        //EL式を展開する
        convStr = regex.replaceEl(convStr);
        sb.append(convStr);
//        sb.append(node.getTagName());
//modify 2007/03/17 kano end
        
        int size = node.size();
        for(int i=0; i<size; i++ ){
            HtmlTag child = (HtmlTag)node.get(i);
            sb.append(super.convert(child, tab));
        }
        sb.append(LINE);
        
//modify 2007/04/04 kano start ホントにFilterする必要が無いか今後検討要
//        //TEXTに含まれる &lt;や&gt;が< >で読込まれるため、
//        //再度、 &lt;や&gt;に変換する
//        String cnvStr = URLDecodeUtil.filter(sb.toString());
//        
//        return cnvStr;
		return sb.toString();
//modify 2007/04/04 kano end
    }
    
}
