namespace BenchtopParser { public class I28 { public static Dictionary Load_ProgramConfig(String program_config_value) { Dictionary program_configs = new Dictionary(); ProgramConfig? current = null; foreach (var line in program_config_value.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)) { var config_line = line.Split("\t").ToList(); if (config_line.Count() < 2) { throw new Exception("Invalid Program Config, please provide an I28 Program Config file data"); } config_line.RemoveAt(0); // Remove random hex value config_line.RemoveAt(0); // Remove L column if (config_line[0].StartsWith("Start,")) { // initialize programconfig current = new ProgramConfig(); continue; } if (config_line[0].StartsWith("Stop,")) { // Short circuit early when stop comes. if (current != null && current.ProgramNumber != null) { program_configs.Add(current.ProgramNumber, current); } current = null; // TODO: What if multiple configs how to handle start and stop? break; } var config = config_line[0].Split(",", 2).ToList(); if (config_line.Count() == 1) { // Set Program Number if (current == null) { throw new Exception("Setting Program Number Before Start. Error In Config"); } Console.WriteLine(config[1]); current.ProgramNumber = config[1]; continue; } // Skip numbers, keep value var value = config[1]; var programnumber_group_data = value.Split('\\'); var data = programnumber_group_data[2]; if (data.StartsWith("=")) { continue; /* comment line */ } var lineConfig = new Configuration(); lineConfig.unit = config_line[1]; lineConfig.type = config_line[2]; //a, c, f, i var name_value = data.Split("="); lineConfig.name = name_value[0]; lineConfig.value = name_value[1]; // Deal with this group logic var group = programnumber_group_data[1]; if (current != null && !current.Group.ContainsKey(group)) { current.Group.Add(group, new Dictionary { { lineConfig.name, lineConfig } }); } else if (current != null) { current.Group[group].Add(lineConfig.name, lineConfig); } else { throw new Exception("Config list is null, something broke"); } } // TODO: What if multiple configs how to handle start and stop? return program_configs; } public static Dictionary Load_TransducerVerify(String transducer_verify_value) { foreach (var line in transducer_verify_value.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)) { } return null; } } }