#include "StdAfx.h"
#include "htmlloader.h"
#include "WorkspaceUtility.h"

CHtmlLoader::CHtmlLoader(void)
{
}

CHtmlLoader::~CHtmlLoader(void)
{
}

/*!
 *	リソースからロード
 *
 *	@param	id	ID
 *	@return		0:成功
 */
int CHtmlLoader::LoadFromResource(int id)
{
	//	リソースからロード
	HRSRC res = FindResource(NULL,MAKEINTRESOURCE(id),RT_HTML);
	int	size = SizeofResource(NULL,res);
	HGLOBAL data = LoadResource(NULL,res);


	if(data!=NULL)
	{
		char * buf = m_html.GetBuffer(size + 1);
		memcpy(buf,data,size);
		buf[size] = 0;
		m_html.ReleaseBuffer();
		return(0);
	}
	return(-1);
}


/*!
 *	ファイルからロード
 *
 *	@param	path	パス
 *	@return			0:成功
 */
int CHtmlLoader::LoadFromFile(CString path)
{
	CFileException e;

	try
	{
		CFile	read;
		read.Open(path,CFile::modeRead | CFile::shareDenyWrite,&e);
		
		int	size = (int)read.GetLength();
		char * buf = m_html.GetBuffer(size + 1);
		read.Read(buf,size);
		buf[size] = 0;
		m_html.ReleaseBuffer();
	}
	catch(CFileException *err) 
	{
		TRACE("File open error : %s\n",err->m_strFileName);
		err->Delete();
		return(-1);
	}
	return(0);
}


/*!
 *	置き換え実行
 *
 *	@param	config	環境領域
 */
void CHtmlLoader::SwapKey(CWorkspaceAccess config)
{
	CWorkspaceTextSwap	swap;

	//	タグを殺しておく
	swap.AddSwap("<","&lt;");
	swap.AddSwap(">","&gt;");

	m_html = config.GetKeySwapString(m_html,"",&swap);
}


/*!
 *	置き換え実行
 *
 *	@param	key		キー
 *	@param	data	データ
 */
void CHtmlLoader::SwapKey(CString key,CString data)
{
	int index = m_html.Find("%" + key + "%");

	while(index != -1)
	{
		m_html = m_html.Mid(0,index) + data + m_html.Mid(index + 2 + key.GetLength());
		index = m_html.Find("%" + key + "%");
	}
}
