Example #1
0
        new public static BotRule CreateRuleFromXml(ChatBotRuleGenerator generator, XmlNode node)
        {
            // get unique setters
            List <Tuple <string, Operator, string> > conditions = new List <Tuple <string, Operator, string> >();

            foreach (XmlNode subnode in node.SelectChatBotNodes("cb:Conditions/cb:Condition").Cast <XmlNode>().Where(n => n.Attributes["Key"] != null && n.Attributes["Operator"] != null))
            {
                switch (subnode.Attributes["Operator"].Value.Trim().ToLower())
                {
                case "equal":
                case "eq":
                    conditions.Add(new Tuple <string, Operator, string>(subnode.Attributes["Key"].Value, Operator.Equal, subnode.InnerText));
                    break;

                case "equalignorecase":
                case "ieq":
                    conditions.Add(new Tuple <string, Operator, string>(subnode.Attributes["Key"].Value, Operator.EqualIgnoreCase, subnode.InnerText));
                    break;

                case "notequal":
                case "ne":
                    conditions.Add(new Tuple <string, Operator, string>(subnode.Attributes["Key"].Value, Operator.NotEqual, subnode.InnerText));
                    break;

                case "notequalignorecase":
                case "ine":
                    conditions.Add(new Tuple <string, Operator, string>(subnode.Attributes["Key"].Value, Operator.NotEqualIgnoreCase, subnode.InnerText));
                    break;

                case "containskey":
                case "ck":
                    conditions.Add(new Tuple <string, Operator, string>(subnode.Attributes["Key"].Value, Operator.ContainsKey, subnode.InnerText));
                    break;

                case "containsvalue":
                case "cv":
                    conditions.Add(new Tuple <string, Operator, string>(subnode.Attributes["Key"].Value, Operator.ContainsValue, subnode.InnerText));
                    break;

                case "containsvalueignorecase":
                case "icv":
                    conditions.Add(new Tuple <string, Operator, string>(subnode.Attributes["Key"].Value, Operator.ContainsValueIgnoreCase, subnode.InnerText));
                    break;
                }
            }

            return(new ConditionBotRule(
                       generator.GetRuleName(node),
                       generator.GetRuleWeight(node),
                       conditions,
                       generator.Parse(node.OwnerDocument, node)
                       ));
        }
Example #2
0
        public static new BotRule CreateRuleFromXml(ChatBotRuleGenerator generator, XmlNode node)
        {
            // get unique setters
            List<Tuple<string, Operator, string>> conditions = new List<Tuple<string, Operator, string>>();
            foreach (XmlNode subnode in node.SelectChatBotNodes("cb:Conditions/cb:Condition").Cast<XmlNode>().Where(n => n.Attributes["Key"] != null && n.Attributes["Operator"] != null))
            {
                switch (subnode.Attributes["Operator"].Value.Trim().ToLower())
                {
                    case "equal":
                    case "eq":
                        conditions.Add(new Tuple<string, Operator, string>(subnode.Attributes["Key"].Value, Operator.Equal, subnode.InnerText));
                        break;
                    case "equalignorecase":
                    case "ieq":
                        conditions.Add(new Tuple<string, Operator, string>(subnode.Attributes["Key"].Value, Operator.EqualIgnoreCase, subnode.InnerText));
                        break;
                    case "notequal":
                    case "ne":
                        conditions.Add(new Tuple<string, Operator, string>(subnode.Attributes["Key"].Value, Operator.NotEqual, subnode.InnerText));
                        break;
                    case "notequalignorecase":
                    case "ine":
                        conditions.Add(new Tuple<string, Operator, string>(subnode.Attributes["Key"].Value, Operator.NotEqualIgnoreCase, subnode.InnerText));
                        break;
                    case "containskey":
                    case "ck":
                        conditions.Add(new Tuple<string, Operator, string>(subnode.Attributes["Key"].Value, Operator.ContainsKey, subnode.InnerText));
                        break;
                    case "containsvalue":
                    case "cv":
                        conditions.Add(new Tuple<string, Operator, string>(subnode.Attributes["Key"].Value, Operator.ContainsValue, subnode.InnerText));
                        break;
                    case "containsvalueignorecase":
                    case "icv":
                        conditions.Add(new Tuple<string, Operator, string>(subnode.Attributes["Key"].Value, Operator.ContainsValueIgnoreCase, subnode.InnerText));
                        break;

                }

            }

            return new ConditionBotRule(
                generator.GetRuleName(node),
                generator.GetRuleWeight(node),
                conditions,
                generator.Parse(node.OwnerDocument, node)
            );
        }