Beispiel #1
0
        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;
                }
            }
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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;
        }
Beispiel #4
0
        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;
                }
            }
        }