public KeywordCollection(FileStrBuff file) { m_Keys = new ArrayList(); file.SkipUntil('{'); file.NextChar(); int brace = 1; while (!file.Eof() && brace > 0) { string tok = file.GetNextToken(); switch (tok[0]) { case '#': { if (tok.ToLower() != "#key") { //Console.WriteLine( "KeywordCollection : Unknown command '{0}'", tok ); continue; } StringBuilder keyExp = new StringBuilder(); int count = 0; while (!file.Eof() && (tok = file.GetNextToken()) != "{") { if (tok[0] == '@') { if (tok == "@InternalGreeting") { if (count > 0) keyExp.Append("|"); count += 7; keyExp.Append("(*hi*)|(*hello*)|(*hail*)|(*greeting*)|(*how*((*you*)|(*thou*)))|(*good*see*thee*)"); } continue; } else { count++; if (count > 1) keyExp.Append("|"); keyExp.AppendFormat("({0})", tok); } } if (!file.Eof()) { file.Seek(-1); // leave the { in the input IStringList[] lists = MakeList(file); //Console.WriteLine( "KC '{0}' loaded {1} sub-lists...", exp, lists.Length ); if (lists != null && keyExp.Length > 0) { keyExp.Replace("*", ".*"); string exp = keyExp.ToString(); if (exp != null && exp.Length > 0) m_Keys.Add(new Keyword(exp, lists)); } } break; } case '{': brace++; break; case '}': brace--; break; default: //Console.WriteLine( "KeywordCollection : Unknown token '{0}'", tok ); break; } } }
public static IStringList[] MakeList(FileStrBuff file) { file.SkipUntil('{'); file.NextChar(); int brace = 1; ArrayList list = new ArrayList(); while (!file.Eof() && brace > 0) { string tok = file.GetNextToken(); switch (tok[0]) { case '{': brace++; break; case '}': brace--; break; case '#': { string lwr = tok.ToLower(); if (lwr == "#attitude") { list.Add(new AttitudeList(file)); } else if (lwr == "#notoriety") { list.Add(new NotorietyList(file)); } //else // Console.WriteLine( "MakeList : Unknown token '{0}'", lwr ); break; } default: { PhraseList pl = new PhraseList(); pl.Add(tok); //if ( brace <= 0 ) // Console.WriteLine( "MakeList : Warning, no opening brace for PhraseList." ); while (!file.Eof() && brace > 0) { tok = file.GetNextToken(); if (tok == "{") { brace++; } else if (tok == "}") { brace--; } else { pl.Add(tok); } } list.Add(pl); break; } } } //while if (list.Count > 0) { return((IStringList[])list.ToArray(typeof(IStringList))); } else { return(null); } }
public static IStringList[] MakeList(FileStrBuff file) { file.SkipUntil('{'); file.NextChar(); int brace = 1; ArrayList list = new ArrayList(); while (!file.Eof() && brace > 0) { string tok = file.GetNextToken(); switch (tok[0]) { case '{': brace++; break; case '}': brace--; break; case '#': { string lwr = tok.ToLower(); if (lwr == "#attitude") list.Add(new AttitudeList(file)); else if (lwr == "#notoriety") list.Add(new NotorietyList(file)); //else // Console.WriteLine( "MakeList : Unknown token '{0}'", lwr ); break; } default: { PhraseList pl = new PhraseList(); pl.Add(tok); //if ( brace <= 0 ) // Console.WriteLine( "MakeList : Warning, no opening brace for PhraseList." ); while (!file.Eof() && brace > 0) { tok = file.GetNextToken(); if (tok == "{") brace++; else if (tok == "}") brace--; else pl.Add(tok); } list.Add(pl); break; } } }//while if (list.Count > 0) return (IStringList[])list.ToArray(typeof(IStringList)); else return null; }
public KeywordCollection(FileStrBuff file) { m_Keys = new ArrayList(); file.SkipUntil('{'); file.NextChar(); int brace = 1; while (!file.Eof() && brace > 0) { string tok = file.GetNextToken(); switch (tok[0]) { case '#': { if (tok.ToLower() != "#key") { //Console.WriteLine( "KeywordCollection : Unknown command '{0}'", tok ); continue; } StringBuilder keyExp = new StringBuilder(); int count = 0; while (!file.Eof() && (tok = file.GetNextToken()) != "{") { if (tok[0] == '@') { if (tok == "@InternalGreeting") { if (count > 0) { keyExp.Append("|"); } count += 7; keyExp.Append("(*hi*)|(*hello*)|(*hail*)|(*greeting*)|(*how*((*you*)|(*thou*)))|(*good*see*thee*)"); } continue; } else { count++; if (count > 1) { keyExp.Append("|"); } keyExp.AppendFormat("({0})", tok); } } if (!file.Eof()) { file.Seek(-1); // leave the { in the input IStringList[] lists = MakeList(file); //Console.WriteLine( "KC '{0}' loaded {1} sub-lists...", exp, lists.Length ); if (lists != null && keyExp.Length > 0) { keyExp.Replace("*", ".*"); string exp = keyExp.ToString(); if (exp != null && exp.Length > 0) { m_Keys.Add(new Keyword(exp, lists)); } } } break; } case '{': brace++; break; case '}': brace--; break; default: //Console.WriteLine( "KeywordCollection : Unknown token '{0}'", tok ); break; } } }