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); } }
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 } }; }
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 } }; }
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 } }; }
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," } }; }
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}" } }; }
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" } }; }
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" } }; }
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 } }; }
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 } }; }