private void Load(string[] lines)
{
bool intextbegin = false;
bool intextend = false;
IList<string> textbegin = new List<string>();
IList<string> textend = new List<string>();
foreach (var item in lines)
{
string line = item.Trim();
if (string.IsNullOrEmpty(line))
continue;
if (line[0] == '#')
continue;
string[] words = line.Split(' ', '\t');
string typename = words[0];
if (!intextbegin && !intextend)
{
if (typename.Equals("text", StringComparison.InvariantCultureIgnoreCase))
{
intextbegin = true;
continue;
}
System.Enum.Parse(typeof(TokenType), typename);
string format = line.Substring(typename.Length).Trim();
this.SetFormat(typename, format);
}
else if (intextbegin)
{
if (words.Length == 1 && typename == "...")
{
intextbegin = false;
intextend = true;
continue;
}
if (words.Length == 1 && typename.Equals("end", StringComparison.InvariantCultureIgnoreCase))
{
intextbegin = false;
intextend = false;
continue;
}
textbegin.Add(item);
}
else if (intextend)
{
if (words.Length == 1 && typename.Equals("end", StringComparison.InvariantCultureIgnoreCase))
{
intextbegin = false;
intextend = false;
continue;
}
textend.Add(item);
}
}
string tbegin = string.Empty;
string tend = string.Empty;
foreach (var line in textbegin)
tbegin += line + "\r\n";
foreach (var line in textend)
tend += line + "\r\n";
if (textend.Count == 0 && textbegin.Count > 0)
this.SetFormat("Text", tbegin);
else if (textend.Count > 0 && textbegin.Count > 0)
{
this.SetFormat("TextBegin", tbegin);
this.SetFormat("TextEnd", tend);
}
}