Example #1
0
 protected override string ProcessChange()
 {
     if (templateNode.Name.ToLower() == "person2")
     {
         if (templateNode.InnerText.Length > 0)
         {
             // non atomic version of the node
             return(AIMLbot.Normalize.ApplySubstitutions.Substitute(bot, bot.Person2Substitutions, templateNode.InnerText));
         }
         else
         {
             // atomic version of the node
             XmlNode starNode      = Utils.AIMLTagHandler.getNode("<star/>");
             star    recursiveStar = new star(bot, user, query, request, result, starNode);
             templateNode.InnerText = recursiveStar.Transform();
             if (templateNode.InnerText.Length > 0)
             {
                 return(ProcessChange());
             }
             else
             {
                 return(string.Empty);
             }
         }
     }
     return(string.Empty);
 }
Example #2
0
 protected override string ProcessChange()
 {
     if (this.templateNode.Name.ToLower() == "gender")
     {
         if (this.templateNode.InnerText.Length > 0)
         {
             // non atomic version of the node
             return AIMLbot.Normalize.ApplySubstitutions.Substitute(this.bot, this.bot.GenderSubstitutions, this.templateNode.InnerText);
         }
         else
         {
             // atomic version of the node
             XmlNode starNode = Utils.AIMLTagHandler.getNode("<star/>");
             star recursiveStar = new star(this.bot, this.user, this.query, this.request, this.result, starNode);
             this.templateNode.InnerText = recursiveStar.Transform();
             if (this.templateNode.InnerText.Length > 0)
             {
                 return this.ProcessChange();
             }
             else
             {
                 return string.Empty;
             }
         }
     }
     return string.Empty;
 }
Example #3
0
        protected override string ProcessChange()
        {
            if (templateNode.Name.ToLower() == "sentence")
            {
                if (templateNode.InnerText.Length > 0)
                {
                    StringBuilder result   = new StringBuilder();
                    char[]        letters  = templateNode.InnerText.Trim().ToCharArray();
                    bool          doChange = true;
                    for (int i = 0; i < letters.Length; i++)
                    {
                        string letterAsString = Convert.ToString(letters[i]);
                        if (bot.Splitters.Contains(letterAsString))
                        {
                            doChange = true;
                        }

                        Regex lowercaseLetter = new Regex("[a-zA-Z]");

                        if (lowercaseLetter.IsMatch(letterAsString))
                        {
                            if (doChange)
                            {
                                result.Append(letterAsString.ToUpper(bot.Locale));
                                doChange = false;
                            }
                            else
                            {
                                result.Append(letterAsString.ToLower(bot.Locale));
                            }
                        }
                        else
                        {
                            result.Append(letterAsString);
                        }
                    }
                    return(result.ToString());
                }
                else
                {
                    // atomic version of the node
                    XmlNode starNode      = Utils.AIMLTagHandler.getNode("<star/>");
                    star    recursiveStar = new star(bot, user, query, request, result, starNode);
                    templateNode.InnerText = recursiveStar.Transform();
                    if (templateNode.InnerText.Length > 0)
                    {
                        return(ProcessChange());
                    }
                    else
                    {
                        return(string.Empty);
                    }
                }
            }

            return(string.Empty);
        }
Example #4
0
        protected override string ProcessChange()
        {
            if(this.templateNode.Name.ToLower()=="sentence")
            {
                if (this.templateNode.InnerText.Length > 0)
                {
                    StringBuilder result = new StringBuilder();
                    char[] letters = this.templateNode.InnerText.Trim().ToCharArray();
                    bool doChange = true;
                    for (int i = 0; i < letters.Length; i++)
                    {
                        string letterAsString = Convert.ToString(letters[i]);
                        if (this.bot.Splitters.Contains(letterAsString))
                        {
                            doChange = true;
                        }

                        Regex lowercaseLetter = new Regex("[a-zA-Z]");

                        if (lowercaseLetter.IsMatch(letterAsString))
                        {
                            if (doChange)
                            {
                                result.Append(letterAsString.ToUpper(this.bot.Locale));
                                doChange = false;
                            }
                            else
                            {
                                result.Append(letterAsString.ToLower(this.bot.Locale));
                            }
                        }
                        else
                        {
                            result.Append(letterAsString);
                        }
                    }
                    return result.ToString();
                }
                else
                {
                    // atomic version of the node
                    XmlNode starNode = Utils.AIMLTagHandler.getNode("<star/>");
                    star recursiveStar = new star(this.bot, this.user, this.query, this.request, this.result, starNode);
                    this.templateNode.InnerText = recursiveStar.Transform();
                    if (this.templateNode.InnerText.Length > 0)
                    {
                        return this.ProcessChange();
                    }
                    else
                    {
                        return string.Empty;
                    }
                }
            }

            return string.Empty;
        }
Example #5
0
 // Token: 0x06000072 RID: 114 RVA: 0x00004BAC File Offset: 0x00003BAC
 protected override string ProcessChange()
 {
     if (this.templateNode.Name.ToLower() == "sr")
     {
         XmlNode node  = AIMLTagHandler.getNode("<star/>");
         star    star  = new star(this.bot, this.user, this.query, this.request, this.result, node);
         string  str   = star.Transform();
         XmlNode node2 = AIMLTagHandler.getNode("<srai>" + str + "</srai>");
         srai    srai  = new srai(this.bot, this.user, this.query, this.request, this.result, node2);
         return(srai.Transform());
     }
     return(string.Empty);
 }
Example #6
0
        protected override string ProcessChange()
        {
            if (this.templateNode.Name.ToLower() == "sr")
            {
                XmlNode starNode = Utils.AIMLTagHandler.getNode("<star/>");
                star recursiveStar = new star(this.bot, this.user, this.query, this.request, this.result, starNode);
                string starContent = recursiveStar.Transform();

                XmlNode sraiNode = AIMLbot.Utils.AIMLTagHandler.getNode("<srai>"+starContent+"</srai>");
                srai sraiHandler = new srai(this.bot, this.user, this.query, this.request, this.result, sraiNode);
                return sraiHandler.Transform();
            }
            return string.Empty;
        }
Example #7
0
        protected override string ProcessChange()
        {
            if (templateNode.Name.ToLower() == "sr")
            {
                XmlNode starNode      = Utils.AIMLTagHandler.getNode("<star/>");
                star    recursiveStar = new star(bot, user, query, request, result, starNode);
                string  starContent   = recursiveStar.Transform();

                XmlNode sraiNode    = AIMLbot.Utils.AIMLTagHandler.getNode("<srai>" + starContent + "</srai>");
                srai    sraiHandler = new srai(bot, user, query, request, result, sraiNode);
                return(sraiHandler.Transform());
            }
            return(string.Empty);
        }
Example #8
0
        // Token: 0x06000018 RID: 24 RVA: 0x000025A0 File Offset: 0x000015A0
        protected override string ProcessChange()
        {
            if (!(this.templateNode.Name.ToLower() == "sentence"))
            {
                return(string.Empty);
            }
            if (this.templateNode.InnerText.Length > 0)
            {
                StringBuilder stringBuilder = new StringBuilder();
                char[]        array         = this.templateNode.InnerText.Trim().ToCharArray();
                bool          flag          = true;
                for (int i = 0; i < array.Length; i++)
                {
                    string text = Convert.ToString(array[i]);
                    if (this.bot.Splitters.Contains(text))
                    {
                        flag = true;
                    }
                    Regex regex = new Regex("[a-zA-Z]");
                    if (regex.IsMatch(text))
                    {
                        if (flag)
                        {
                            stringBuilder.Append(text.ToUpper(this.bot.Locale));
                            flag = false;
                        }
                        else
                        {
                            stringBuilder.Append(text.ToLower(this.bot.Locale));
                        }
                    }
                    else
                    {
                        stringBuilder.Append(text);
                    }
                }
                return(stringBuilder.ToString());
            }
            XmlNode node = AIMLTagHandler.getNode("<star/>");
            star    star = new star(this.bot, this.user, this.query, this.request, this.result, node);

            this.templateNode.InnerText = star.Transform();
            if (this.templateNode.InnerText.Length > 0)
            {
                return(this.ProcessChange());
            }
            return(string.Empty);
        }
Example #9
0
        // Token: 0x06000016 RID: 22 RVA: 0x000024C8 File Offset: 0x000014C8
        protected override string ProcessChange()
        {
            if (!(this.templateNode.Name.ToLower() == "person2"))
            {
                return(string.Empty);
            }
            if (this.templateNode.InnerText.Length > 0)
            {
                return(ApplySubstitutions.Substitute(this.bot, this.bot.Person2Substitutions, this.templateNode.InnerText));
            }
            XmlNode node = AIMLTagHandler.getNode("<star/>");
            star    star = new star(this.bot, this.user, this.query, this.request, this.result, node);

            this.templateNode.InnerText = star.Transform();
            if (this.templateNode.InnerText.Length > 0)
            {
                return(this.ProcessChange());
            }
            return(string.Empty);
        }
Example #10
0
        /// <summary>
        /// Recursively evaluates the template nodes returned from the bot
        /// </summary>
        /// <param name="node">the node to evaluate</param>
        /// <param name="query">the query that produced this node</param>
        /// <param name="request">the request from the user</param>
        /// <param name="result">the result to be sent to the user</param>
        /// <param name="user">the user who originated the request</param>
        /// <returns>the output string</returns>
        private string processNode(XmlNode node, SubQuery query, Request request, Result result, User user)
        {
            // check for timeout (to avoid infinite loops)
            if (request.StartedOn.AddMilliseconds(request.bot.TimeOut) < DateTime.Now)
            {
                request.bot.writeToLog("WARNING! Request timeout. User: "******" raw input: \"" + request.rawInput + "\" processing template: \"" + query.Template + "\"");
                request.hasTimedOut = true;
                return(string.Empty);
            }

            StringBuilder newInnerText = new StringBuilder();

            if (node.HasChildNodes)
            {
                // recursively check
                foreach (XmlNode childNode in node.ChildNodes)
                {
                    childNode.InnerText = this.processNode(childNode, query, request, result, user);
                }
            }

            // process the node itself
            AIMLTagHandler tagHandler = null;

            switch (node.Name.ToLower())
            {
            case "bot":
                tagHandler = new AIMLTagHandlers.bot(this, user, query, request, result, node);
                break;

            case "condition":
                tagHandler = new AIMLTagHandlers.condition(this, user, query, request, result, node);
                break;

            case "date":
                tagHandler = new AIMLTagHandlers.date(this, user, query, request, result, node);
                break;

            case "formal":
                tagHandler = new AIMLTagHandlers.formal(this, user, query, request, result, node);
                break;

            case "gender":
                tagHandler = new AIMLTagHandlers.gender(this, user, query, request, result, node);
                break;

            case "get":
                tagHandler = new AIMLTagHandlers.get(this, user, query, request, result, node);
                break;

            case "gossip":
                tagHandler = new AIMLTagHandlers.gossip(this, user, query, request, result, node);
                break;

            case "id":
                tagHandler = new AIMLTagHandlers.id(this, user, query, request, result, node);
                break;

            case "input":
                tagHandler = new AIMLTagHandlers.input(this, user, query, request, result, node);
                break;

            case "javascript":
                tagHandler = new AIMLTagHandlers.javascript(this, user, query, request, result, node);
                break;

            case "learn":
                tagHandler = new AIMLTagHandlers.learn(this, user, query, request, result, node);
                break;

            case "lowercase":
                tagHandler = new AIMLTagHandlers.lowercase(this, user, query, request, result, node);
                break;

            case "person":
                tagHandler = new AIMLTagHandlers.person(this, user, query, request, result, node);
                break;

            case "person2":
                tagHandler = new AIMLTagHandlers.person2(this, user, query, request, result, node);
                break;

            case "random":
                tagHandler = new AIMLTagHandlers.random(this, user, query, request, result, node);
                break;

            case "sentence":
                tagHandler = new AIMLTagHandlers.sentence(this, user, query, request, result, node);
                break;

            case "set":
                tagHandler = new AIMLTagHandlers.set(this, user, query, request, result, node);
                break;

            case "size":
                tagHandler = new AIMLTagHandlers.size(this, user, query, request, result, node);
                break;

            case "sr":
                tagHandler = new AIMLTagHandlers.sr(this, user, query, request, result, node);
                break;

            case "srai":
                tagHandler = new AIMLTagHandlers.srai(this, user, query, request, result, node);
                break;

            case "star":
                tagHandler = new AIMLTagHandlers.star(this, user, query, request, result, node);
                break;

            case "system":
                tagHandler = new AIMLTagHandlers.system(this, user, query, request, result, node);
                break;

            case "that":
                tagHandler = new AIMLTagHandlers.that(this, user, query, request, result, node);
                break;

            case "thatstar":
                tagHandler = new AIMLTagHandlers.thatstar(this, user, query, request, result, node);
                break;

            case "think":
                tagHandler = new AIMLTagHandlers.think(this, user, query, request, result, node);
                break;

            case "topicstar":
                tagHandler = new AIMLTagHandlers.topicstar(this, user, query, request, result, node);
                break;

            case "uppercase":
                tagHandler = new AIMLTagHandlers.uppercase(this, user, query, request, result, node);
                break;

            case "version":
                tagHandler = new AIMLTagHandlers.version(this, user, query, request, result, node);
                break;

            default:
                tagHandler = this.getBespokeTags(user, query, request, result, node);
                break;
            }
            if (object.Equals(null, tagHandler))
            {
                return(node.InnerText);
            }
            else
            {
                return(tagHandler.Transform());
            }
        }
Example #11
0
 /// <summary>
 /// Recursively evaluates the template nodes returned from the bot
 /// </summary>
 /// <param name="node">the node to evaluate</param>
 /// <param name="query">the query that produced this node</param>
 /// <param name="request">the request from the user</param>
 /// <param name="result">the result to be sent to the user</param>
 /// <param name="user">the user who originated the request</param>
 /// <returns>the output string</returns>
 private string processNode(XmlNode node, SubQuery query, Request request, Result result, User user)
 {
     // check for timeout (to avoid infinite loops)
     if (request.StartedOn.AddMilliseconds(request.bot.TimeOut) < DateTime.Now)
     {
         request.bot.writeToLog("WARNING! Request timeout. User: "******" raw input: \"" + request.rawInput + "\" processing template: \""+query.Template+"\"");
         request.hasTimedOut = true;
         return string.Empty;
     }
                 
     // process the node
     string tagName = node.Name.ToLower();
     if (tagName == "template")
     {
         StringBuilder templateResult = new StringBuilder();
         if (node.HasChildNodes)
         {
             // recursively check
             foreach (XmlNode childNode in node.ChildNodes)
             {
                 templateResult.Append(this.processNode(childNode, query, request, result, user));
             }
         }
         return templateResult.ToString();
     }
     else
     {
         AIMLTagHandler tagHandler = null;
         tagHandler = this.getBespokeTags(user, query, request, result, node);
         if (object.Equals(null, tagHandler))
         {
             switch (tagName)
             {
                 case "bot":
                     tagHandler = new AIMLTagHandlers.bot(this, user, query, request, result, node);
                     break;
                 case "condition":
                      tagHandler = new AIMLTagHandlers.Condition(this, user, query, request, result, node);
                     break;
                 case "date":
                     tagHandler = new AIMLTagHandlers.date(this, user, query, request, result, node);
                     break;
                 case "formal":
                     tagHandler = new AIMLTagHandlers.formal(this, user, query, request, result, node);
                     break;
                 case "gender":
                     tagHandler = new AIMLTagHandlers.gender(this, user, query, request, result, node);
                     break;
                 case "get":
                     tagHandler = new AIMLTagHandlers.get(this, user, query, request, result, node);
                     break;
                 case "gossip":
                     tagHandler = new AIMLTagHandlers.gossip(this, user, query, request, result, node);
                     break;
                 case "id":
                     tagHandler = new AIMLTagHandlers.id(this, user, query, request, result, node);
                     break;
                 case "input":
                     tagHandler = new AIMLTagHandlers.input(this, user, query, request, result, node);
                     break;
                 case "javascript":
                     tagHandler = new AIMLTagHandlers.javascript(this, user, query, request, result, node);
                     break;
                 case "learn":
                     tagHandler = new AIMLTagHandlers.learn(this, user, query, request, result, node);
                     break;
                 case "lowercase":
                     tagHandler = new AIMLTagHandlers.lowercase(this, user, query, request, result, node);
                     break;
                 case "person":
                     tagHandler = new AIMLTagHandlers.person(this, user, query, request, result, node);
                     break;
                 case "person2":
                     tagHandler = new AIMLTagHandlers.person2(this, user, query, request, result, node);
                     break;
                 case "random":
                     tagHandler = new AIMLTagHandlers.random(this, user, query, request, result, node);
                     break;
                 case "sentence":
                     tagHandler = new AIMLTagHandlers.sentence(this, user, query, request, result, node);
                     break;
                 case "set":
                     tagHandler = new AIMLTagHandlers.set(this, user, query, request, result, node);
                     break;
                 case "size":
                     tagHandler = new AIMLTagHandlers.size(this, user, query, request, result, node);
                     break;
                 case "sr":
                     tagHandler = new AIMLTagHandlers.sr(this, user, query, request, result, node);
                     break;
                 case "srai":
                     tagHandler = new AIMLTagHandlers.srai(this, user, query, request, result, node);
                     break;
                 case "star":
                     tagHandler = new AIMLTagHandlers.star(this, user, query, request, result, node);
                     break;
                 case "system":
                     tagHandler = new AIMLTagHandlers.system(this, user, query, request, result, node);
                     break;
                 case "that":
                     tagHandler = new AIMLTagHandlers.that(this, user, query, request, result, node);
                     break;
                 case "thatstar":
                     tagHandler = new AIMLTagHandlers.thatstar(this, user, query, request, result, node);
                     break;
                 case "think":
                     tagHandler = new AIMLTagHandlers.think(this, user, query, request, result, node);
                     break;
                 case "topicstar":
                     tagHandler = new AIMLTagHandlers.topicstar(this, user, query, request, result, node);
                     break;
                 case "uppercase":
                     tagHandler = new AIMLTagHandlers.uppercase(this, user, query, request, result, node);
                     break;
                 case "version":
                     tagHandler = new AIMLTagHandlers.version(this, user, query, request, result, node);
                     break;
                 default:
                     tagHandler = null;
                     break;
             }
         }
         if (object.Equals(null, tagHandler))
         {
             return node.InnerText;
         }
         else
         {
             if (tagHandler.isRecursive)
             {
                 if (node.HasChildNodes)
                 {
                     // recursively check
                     foreach (XmlNode childNode in node.ChildNodes)
                     {
                         if (childNode.NodeType != XmlNodeType.Text)
                         {
                             childNode.InnerXml = this.processNode(childNode, query, request, result, user);
                         }
                     }
                 }
                 return tagHandler.Transform();
             }
             else
             {
                 string resultNodeInnerXML = tagHandler.Transform();
                 XmlNode resultNode = AIMLTagHandler.getNode("<node>" + resultNodeInnerXML + "</node>");
                 if (resultNode.HasChildNodes)
                 {
                     StringBuilder recursiveResult = new StringBuilder();
                     // recursively check
                     foreach (XmlNode childNode in resultNode.ChildNodes)
                     {
                         recursiveResult.Append(this.processNode(childNode, query, request, result, user));
                     }
                     return recursiveResult.ToString();
                 }
                 else
                 {
                     return resultNode.InnerXml;
                 }
             }
         }
     }
 }