private Tuple <bool, bool> FindCircuitCount(string line) { //tuple values are: "found circuit?" true/false and "finished reading board section?" true/false if (line.Contains("Fiducial")) { if (CircuitList.Count > 0) { --CircuitCount; } return(Tuple.Create(false, true)); } Regex reCircuit = new Regex("\\s+Circuit[\\s:\"]+Circuit"); Regex reOffset = new Regex("\\s+Circuit[\\s:\"]+(Offset |\\d{ 1,2})"); Match matchCircuit = reCircuit.Match(line); Match matchOffset = reOffset.Match(line); try { string[] sep = new string[] { "\"" }; if (matchOffset.Success) { string[] temp = line.Split(sep, StringSplitOptions.RemoveEmptyEntries); if (!temp[5].Equals(temp[9])) { ++CircuitCount; return(Tuple.Create(true, false)); } else { return(Tuple.Create(false, false)); } } else if (matchCircuit.Success) { string[] temp = line.Split(sep, StringSplitOptions.RemoveEmptyEntries); if (CircuitList.Add(temp[1])) { ++CircuitCount; return(Tuple.Create(true, false)); } else { return(Tuple.Create(false, false)); } } else { return(Tuple.Create(false, false)); } } catch (Exception e) { MessageBox.Show("The program had a problem parsing the board template section.\nReturning current count of " + CircuitCount.ToString() + " but could be wrong.\n" + e.Message, "Ci2Parser:FindCircuitCount()", MessageBoxButton.OK, MessageBoxImage.Warning); return(Tuple.Create(false, true)); } }