#include "StdAfx.h"
#include "SettingTextParser.h"
#include "TextTools.h"

/*!
	パース実効
*/
void CSettingTextParser::ParseText(CString text, CSettingTextParserItemArray &parsed)
{
	//	前処理
	text.Replace("\r\n","\n");
	text.Replace("\r","\n");
	text.Replace("\n","\r\n");
	parsed.RemoveAll();

	int lineCounter = 0;
	CString	line;
	while(CTextTools::GetLine(text,line))
		ParseLine(line, parsed, lineCounter++);
}

///////////////////////////////////////////////////////////////////
//	ツール
///////////////////////////////////////////////////////////////////
/*!
	1行解析
*/
void CSettingTextParser::ParseLine(CString line, CSettingTextParserItemArray &parsed, int lineCount)
{
	//	前処理
	line.Trim();
	line.Replace("\t",",");
	line.Replace(" ",",");

	//	コメント処理
	if(line.IsEmpty() || line.Left(1) == "#" || line.Left(2) == "//")
		return;

	//	分解
	CStringArray	tokens;
	CTextTools::GetAllToken(line, tokens, ",");

	//	掃除
	for(int i=tokens.GetCount()-1; i>=0; i--)
	{
		tokens[i].Trim();
		if(tokens[i].IsEmpty())
			tokens.RemoveAt(i);
	}

	//	生成
	CSettingTextParserItem	add;
	add.m_keyText = tokens[0];
	if(tokens.GetSize() > 1)
	{
		tokens.RemoveAt(0);
		add.m_dataArray.Copy(tokens);
	}
	parsed.Add(add);
}

