public static NodeItem ReadString(string input) { NodeItem node = new NodeItem(); if (string.IsNullOrEmpty(input)) { return(GetEmpty()); } node.IsEmpty = false; node.IsEvalReady = int.TryParse(input, out int leftVal) | input == "x"; node.ParamString = input; decimal val; if (node.IsEvalReady && decimal.TryParse(input, out val)) { node.ParamValue = val.ToString(); } else { node.ParamValue = ""; } return(node); }
public static NodeItem GetEmpty() { NodeItem nodeItem = new NodeItem(); nodeItem.IsEmpty = true; return(nodeItem); }
public static EquationItem GetItem(string input, string variableValue, int parent, int level, int lastLevelId) { try { //Find First + sign int plusIndex = input.IndexOf('+'); int minusIndex = input.IndexOf('-'); int timesIndex = input.IndexOf('*'); int cosineIndex = input.IndexOf("cos["); int sinIndex = input.IndexOf("sin["); //Resolve addition first if (plusIndex != -1) { string[] arr = input.Split(new char[] { '+' }, 2); if (arr.Length == 2) { EquationItem equationItem = new EquationItem(); equationItem.IsEmpty = false; equationItem.Id = level * 10 + lastLevelId; equationItem.Parent = parent; equationItem.Level = level; equationItem.Operation = "+"; equationItem.LeftNode = NodeItem.ReadString(arr[0]); equationItem.RightNode = NodeItem.ReadString(arr[1]); equationItem.VariableValue = variableValue; return(equationItem); } } //Resolve subtraction if (minusIndex != -1) { string[] arr = input.Split(new char[] { '-' }, 2); if (arr.Length == 2) { EquationItem equationItem = new EquationItem(); equationItem.IsEmpty = false; equationItem.Id = level * 10 + lastLevelId; equationItem.Parent = parent; equationItem.Level = level; equationItem.Operation = "-"; equationItem.LeftNode = NodeItem.ReadString(arr[0]); equationItem.RightNode = NodeItem.ReadString(arr[1]); equationItem.VariableValue = variableValue; return(equationItem); } } //Resolve multiplication if (timesIndex != -1) { string[] arr = input.Split(new char[] { '*' }, 2); if (arr.Length == 2) { EquationItem equationItem = new EquationItem(); equationItem.IsEmpty = false; equationItem.Id = level * 10 + lastLevelId; equationItem.Parent = parent; equationItem.Level = level; equationItem.Operation = "*"; equationItem.LeftNode = NodeItem.ReadString(arr[0]); equationItem.RightNode = NodeItem.ReadString(arr[1]); equationItem.VariableValue = variableValue; return(equationItem); } } //Resolve Cosine if (cosineIndex != -1) { string cosParam = input?.Substring(cosineIndex).Split('[', ']')[1]; EquationItem equationItem = new EquationItem(); equationItem.IsEmpty = false; equationItem.Id = level * 10 + lastLevelId; equationItem.Parent = parent; equationItem.Level = level; equationItem.Operation = "cos"; equationItem.LeftNode = NodeItem.ReadString(cosParam); equationItem.RightNode = NodeItem.ReadString(cosParam); equationItem.VariableValue = variableValue; return(equationItem); } //Resolve Sin if (sinIndex != -1) { string sinParam = input?.Substring(sinIndex).Split('[', ']')[1]; EquationItem equationItem = new EquationItem(); equationItem.IsEmpty = false; equationItem.Id = level * 10 + lastLevelId; equationItem.Parent = parent; equationItem.Level = level; equationItem.Operation = "sin"; equationItem.LeftNode = NodeItem.ReadString(sinParam); equationItem.RightNode = NodeItem.ReadString(sinParam); equationItem.VariableValue = variableValue; return(equationItem); } return(GetEmpty()); } catch (System.Exception) { throw; } }