private static Scripts.Logic.Conditional CreateConditionalSubStep(XmlNode node) { switch (node.Name) { case "equals": { /// must have two attributes. their names are unimportants string A = node.Attributes[0].Value; string B = node.Attributes[1].Value; return(new Scripts.EqualityConditional(A, B)); } case "and": { Scripts.Logic.Conjunction conjunction = new SNAP.Scripts.Logic.Conjunction(); foreach (XmlNode childNode in node.ChildNodes) { conjunction.SubTerms.Add(CreateConditionalSubStep(childNode)); } return(conjunction); } case "or": { Scripts.Logic.Conjunction conjunction = new SNAP.Scripts.Logic.Conjunction(); foreach (XmlNode childNode in node.ChildNodes) { conjunction.SubTerms.Add(CreateConditionalSubStep(childNode)); } return(conjunction); } case "not": System.Diagnostics.Debug.Assert(node.ChildNodes.Count == 1); return(new Scripts.Logic.Negation(CreateConditionalSubStep(node.FirstChild))); } throw new System.ArgumentException("The conditional type " + node.Name + " is invalid"); }
private static Scripts.Logic.Conditional CreateConditionalSubStep(XmlNode node) { switch (node.Name) { case "equals": { /// must have two attributes. their names are unimportants string A = node.Attributes[0].Value; string B = node.Attributes[1].Value; return new Scripts.EqualityConditional(A, B); } case "and": { Scripts.Logic.Conjunction conjunction = new SNAP.Scripts.Logic.Conjunction(); foreach (XmlNode childNode in node.ChildNodes) { conjunction.SubTerms.Add(CreateConditionalSubStep(childNode)); } return conjunction; } case "or": { Scripts.Logic.Conjunction conjunction = new SNAP.Scripts.Logic.Conjunction(); foreach (XmlNode childNode in node.ChildNodes) { conjunction.SubTerms.Add(CreateConditionalSubStep(childNode)); } return conjunction; } case "not": System.Diagnostics.Debug.Assert(node.ChildNodes.Count == 1); return new Scripts.Logic.Negation(CreateConditionalSubStep(node.FirstChild)); } throw new System.ArgumentException("The conditional type " + node.Name + " is invalid"); }