Example #1
0
        protected override Unifiable ProcessChangeU()
        {
            if (FinalResultValid)
            {
                return(FinalResult);
            }
            ResetValues(true);
            int maxConditions = GetAttribValue <int>(templateNode, "count", 1);
            int minConditions = GetAttribValue <int>(templateNode, "mincount", 1);
            var nodes         = SelectNodes(templateNode.ChildNodes);

            if (CheckNode("random"))
            {
                Unifiable appendable = Unifiable.CreateAppendable();
                if (templateNode.HasChildNodes)
                {
                    // only grab <li> nodes
                    List <XmlNode> listNodes = new List <XmlNode>();
                    foreach (XmlNode childNode in nodes)
                    {
                        if (childNode.Name == "li")
                        {
                            listNodes.Add(childNode);
                        }
                    }
                    // randomly grab <li> nodes and use them
                    List <XmlNode> useNodes = new List <XmlNode>();
                    while (maxConditions-- > 0 && listNodes.Count > 0)
                    {
                        XmlNode chosenNode = listNodes[r.Next(0, listNodes.Count - 1)];
                        listNodes.Remove(chosenNode);
                        var childResult = ProcessChildNode(chosenNode);
                        if (childResult != null)
                        {
                            useNodes.Add(chosenNode);
                            QueryHasSuceededN++;
                            appendable.Append(childResult);
                        }
                    }
                    if (QueryHasSuceededN < minConditions)
                    {
                        QueryHasFailedN++;
                        return(null);
                    }
                    return(appendable);
                }
            }
            return(Unifiable.Empty);
        }
Example #2
0
 protected override Unifiable Format(Unifiable templateNodeInnerText)
 {
     if (CheckNode("formal"))
     {
         Unifiable result = Unifiable.CreateAppendable();
         Unifiable rest   = templateNodeInnerText;
         while (!IsNullOrEmpty(rest))
         {
             // Unifiable[] words = templateNodeInnerText.AsString().Split(new char[]{''});
             Unifiable word = rest.First;
             rest = rest.Rest;
             {
                 Unifiable newWord = word.ToPropper();
                 result.Append(newWord);
             }
         }
         return(Trim(Unifiable.ToVMString(result)));
     }
     return(Unifiable.Empty);
 }
Example #3
0
        protected override Unifiable ProcessChangeU()
        {
            return(templateNodeInnerText);

            if (false && templateNode.Name.ToLower() == "aimlexec")
            {
                Unifiable result = Unifiable.CreateAppendable();
                Unifiable rest   = templateNodeInnerText;
                while (!IsNullOrEmpty(rest))
                {
                    // Unifiable[] words = templateNodeInnerText.AsString().Split(new char[]{''});
                    Unifiable word = templateNodeInnerText.First;
                    rest = rest.Rest;
                    {
                        Unifiable newWord = word;
                        result.Append(newWord + " ");
                    }
                }
                return(Trim(Unifiable.ToVMString(result)));
            }
            return(templateNodeInnerText);
        }