Пример #1
0
        private void ExtractVars(OperationConditionPart opPart, IDictionary <string, ExtractedVariable> variables)
        {
            var opPartLeft  = opPart.LeftSide as OperationConditionPart;
            var opPartRight = opPart.RightSide as OperationConditionPart;

            if (opPartLeft != null)
            {
                ExtractVars(opPartLeft, variables);
            }

            if (opPartRight != null)
            {
                ExtractVars(opPartRight, variables);
            }

            var opPartLeftV  = opPart.LeftSide as VariableConditionPart;
            var opPartRightV = opPart.RightSide as VariableConditionPart;

            if (opPartLeftV != null && opPartRightV != null)
            {
                NoteVar(variables, opPartLeftV.VariableName, "{" + opPartRightV.VariableName + "}");
                NoteVar(variables, opPartRightV.VariableName, "{" + opPartLeftV.VariableName + "}");
            }
            else if (opPartLeftV != null)
            {
                NoteVars(opPartLeftV, opPart.RightSide, variables);
            }
            else if (opPartRightV != null)
            {
                NoteVars(opPartRightV, opPart.LeftSide, variables);
            }
        }
Пример #2
0
 public UntilRangeTemplateElement(AbstractTemplateElement parent) : base(parent)
 {
     Minimum = new VariableConditionPart {
         VariableName = "Min2"
     };
     Maximum = new OperationConditionPart
     {
         LeftSide = new VariableConditionPart {
             VariableName = "Max2"
         },
         RightSide = new LiteralConditionPart {
             Value = "1"
         },
         Operator = ConditionPartOperatorEnum.Add
     };
     InludeMaximum = false;
     Elements      = new AbstractTemplateElement[]
     {
         new StaticTemplateElement(this)
         {
             Content = Environment.NewLine
         },
         new DefineITemplateElement(this),
         new StaticTemplateElement(this)
         {
             Content = " " + Environment.NewLine + "-)   Counting From {Min2} UNTIL {Max2} : {I}  {FAV}    " + Environment.NewLine
         }
     };
 }
Пример #3
0
 public CarsEnumeratorTemplateElement(AbstractTemplateElement parent) : base(parent)
 {
     EnumerationCondition = new OperationConditionPart()
     {
         LeftSide = new VariableConditionPart {
             VariableName = "Car"
         },
         RightSide = new GroupedConditionPart {
             Values = new AbstractConditionPart[] { new LiteralConditionPart {
                                                        Value = "Mercedes"
                                                    }, new LiteralConditionPart {
                                                        Value = "Kia"
                                                    }, new LiteralConditionPart {
                                                        Value = "Subaru"
                                                    }, new LiteralConditionPart {
                                                        Value = "Dodge"
                                                    }, new LiteralConditionPart {
                                                        Value = "Mitsubichi"
                                                    } }
         },
         Operator = ConditionPartOperatorEnum.In
     };
     Elements = new AbstractTemplateElement[]
     {
         new StaticTemplateElement(this)
         {
             Content = Environment.NewLine + "- {Car}   "
         },
         new CarIsMyCarConditionalTemplateElement(this),
         new StaticTemplateElement(this)
         {
             Content = Environment.NewLine
         }
     };
 }
Пример #4
0
 public BitternessChocolateConditionalTemplateElement(AbstractTemplateElement parent) : base(parent)
 {
     Condition = new OperationConditionPart
     {
         LeftSide = new VariableConditionPart {
             VariableName = "Chocolate"
         },
         RightSide = new GroupedConditionPart {
             Values = new AbstractConditionPart[] { new LiteralConditionPart {
                                                        Value = "White"
                                                    }, new LiteralConditionPart {
                                                        Value = "Milk"
                                                    } }
         },
         Operator = ConditionPartOperatorEnum.In
     };
     ConditionTrueElements = new AbstractTemplateElement[]
     {
         new StaticTemplateElement(this)
         {
             Content = "    " + Environment.NewLine + "*  this is sugary chocolate because it's {Chocolate}" + Environment.NewLine
         }
     };
     ConditionFalseElements = new AbstractTemplateElement[]
     {
         new StaticTemplateElement(this)
         {
             Content = "         " + Environment.NewLine + "*  this is bitter chocolate because it's {Chocolate}" + Environment.NewLine
         }
     };
 }
Пример #5
0
 public BuddyConditionalTemplateElement(AbstractTemplateElement parent) : base(parent)
 {
     Condition = new OperationConditionPart()
     {
         LeftSide = new VariableConditionPart {
             VariableName = "IsMyBuddy"
         },
         RightSide = new LiteralConditionPart {
             Value = "True"
         },
         Operator = ConditionPartOperatorEnum.Equals
     };
     ConditionTrueElements = new AbstractTemplateElement[]
     {
         new StaticTemplateElement(this)
         {
             Content = "buddy !"
         }
     };
     ConditionFalseElements = new AbstractTemplateElement[]
     {
         new StaticTemplateElement(this)
         {
             Content = "you,"
         }
     };
 }
Пример #6
0
 public BigNumberConditionalTemplateElement(AbstractTemplateElement parent) : base(parent)
 {
     Condition = new OperationConditionPart()
     {
         LeftSide = new OperationConditionPart()
         {
             LeftSide = new VariableConditionPart {
                 VariableName = "BigNumber"
             },
             RightSide = new LiteralConditionPart {
                 Value = "3"
             },
             Operator = ConditionPartOperatorEnum.Multiply
         },
         RightSide = new LiteralConditionPart {
             Value = "5"
         },
         Operator = ConditionPartOperatorEnum.GreaterThan
     };
     ConditionTrueElements = new AbstractTemplateElement[]
     {
         new StaticTemplateElement(this)
         {
             Content = "VeryBig Number!!! "
         },
         new EvaluateTemplateElement(this)
         {
             Expression = new OperationConditionPart()
             {
                 LeftSide = new VariableConditionPart {
                     VariableName = "BigNumber"
                 },
                 RightSide = new LiteralConditionPart {
                     Value = "5"
                 },
                 Operator = ConditionPartOperatorEnum.Multiply
             }
         },
         new StaticTemplateElement(this)
         {
             Content = " {Animal}"
         }
     };
 }
Пример #7
0
 public I42ConditionalTemplateElement(AbstractTemplateElement parent) : base(parent)
 {
     Condition = new OperationConditionPart()
     {
         LeftSide = new VariableConditionPart {
             VariableName = "I"
         },
         RightSide = new LiteralConditionPart {
             Value = "42"
         },
         Operator = ConditionPartOperatorEnum.Equals
     };
     ConditionTrueElements = new AbstractTemplateElement[]
     {
         new StaticTemplateElement(this)
         {
             Content = "My Favorite Number"
         }
     };
 }
Пример #8
0
 public CarIsMyCarConditionalTemplateElement(AbstractTemplateElement parent) : base(parent)
 {
     Condition = new OperationConditionPart()
     {
         LeftSide = new VariableConditionPart {
             VariableName = "Car"
         },
         RightSide = new VariableConditionPart {
             VariableName = "MyCar"
         },
         Operator = ConditionPartOperatorEnum.Equals
     };
     ConditionTrueElements = new AbstractTemplateElement[]
     {
         new StaticTemplateElement(this)
         {
             Content = "(---- MINE"
         }
     };
 }
Пример #9
0
 public ChocolateConditionalTemplateElement(AbstractTemplateElement parent) : base(parent)
 {
     Condition = new OperationConditionPart
     {
         LeftSide = new OperationConditionPart
         {
             LeftSide = new OperationConditionPart
             {
                 LeftSide = new VariableConditionPart {
                     VariableName = "Chocolate"
                 },
                 RightSide = new LiteralConditionPart {
                     Value = "White"
                 },
                 Operator = ConditionPartOperatorEnum.Equals
             },
             RightSide = new OperationConditionPart
             {
                 LeftSide = new VariableConditionPart {
                     VariableName = "Fruit"
                 },
                 RightSide = new LiteralConditionPart {
                     Value = "Lemon"
                 },
                 Operator = ConditionPartOperatorEnum.Equals
             },
             Operator = ConditionPartOperatorEnum.And
         },
         RightSide = new OperationConditionPart
         {
             LeftSide = new OperationConditionPart
             {
                 LeftSide = new VariableConditionPart {
                     VariableName = "Chocolate"
                 },
                 RightSide = new LiteralConditionPart {
                     Value = "Dark"
                 },
                 Operator = ConditionPartOperatorEnum.Equals
             },
             RightSide = new OperationConditionPart
             {
                 LeftSide = new VariableConditionPart {
                     VariableName = "Fruit"
                 },
                 RightSide = new LiteralConditionPart {
                     Value = "Strawberry"
                 },
                 Operator = ConditionPartOperatorEnum.Equals
             },
             Operator = ConditionPartOperatorEnum.And
         },
         Operator = ConditionPartOperatorEnum.Or
     };
     ConditionTrueElements = new AbstractTemplateElement[]
     {
         new StaticTemplateElement(this)
         {
             Content = Environment.NewLine + "*  The mix of {Chocolate} Chocolate and {Fruit} is perfect" + Environment.NewLine
         }
     };
     ConditionFalseElements = new AbstractTemplateElement[]
     {
         new StaticTemplateElement(this)
         {
             Content = Environment.NewLine
         },
         new BitternessChocolateConditionalTemplateElement(this),
         new StaticTemplateElement(this)
         {
             Content = "   " + Environment.NewLine + "*  this is a cool fruit: {Fruit}" + Environment.NewLine
         }
     };
 }
Пример #10
0
 public BobAndBillyConditionalTemplateElement(AbstractTemplateElement parent) : base(parent)
 {
     Condition = new OperationConditionPart
     {
         LeftSide = new OperationConditionPart
         {
             LeftSide = new OperationConditionPart
             {
                 LeftSide = new OperationConditionPart
                 {
                     LeftSide = new VariableConditionPart {
                         VariableName = "Person"
                     },
                     RightSide = new LiteralConditionPart {
                         Value = "Bob"
                     },
                     Operator = ConditionPartOperatorEnum.Different
                 },
                 RightSide = new OperationConditionPart
                 {
                     LeftSide = new VariableConditionPart {
                         VariableName = "Person"
                     },
                     RightSide = new LiteralConditionPart {
                         Value = "Billy"
                     },
                     Operator = ConditionPartOperatorEnum.Different
                 },
                 Operator = ConditionPartOperatorEnum.And
             },
             RightSide = new OperationConditionPart
             {
                 LeftSide = new OperationConditionPart
                 {
                     LeftSide = new VariableConditionPart {
                         VariableName = "Fruit"
                     },
                     RightSide = new LiteralConditionPart {
                         Value = "Orange"
                     },
                     Operator = ConditionPartOperatorEnum.Equals
                 },
                 RightSide = new OperationConditionPart
                 {
                     LeftSide = new LiteralConditionPart {
                         Value = "Kiwi"
                     },
                     RightSide = new VariableConditionPart {
                         VariableName = "Fruit"
                     },
                     Operator = ConditionPartOperatorEnum.Equals
                 },
                 Operator = ConditionPartOperatorEnum.Or
             },
             Operator = ConditionPartOperatorEnum.And
         },
         RightSide = new OperationConditionPart
         {
             LeftSide = new OperationConditionPart
             {
                 LeftSide = new VariableConditionPart {
                     VariableName = "Fruit"
                 },
                 RightSide = new LiteralConditionPart {
                     Value = "Pineapple"
                 },
                 Operator = ConditionPartOperatorEnum.Equals
             },
             RightSide = new OperationConditionPart
             {
                 LeftSide = new VariableConditionPart {
                     VariableName = "Fruit"
                 },
                 RightSide = new LiteralConditionPart {
                     Value = "Apple"
                 },
                 Operator = ConditionPartOperatorEnum.Equals
             },
             Operator = ConditionPartOperatorEnum.Or
         },
         Operator = ConditionPartOperatorEnum.Or
     };
     ConditionTrueElements = new AbstractTemplateElement[]
     {
         new StaticTemplateElement(this)
         {
             Content = Environment.NewLine + "* This {Person} really appreciates {Fruit}" + Environment.NewLine
         }
     };
 }