private LogicalTable.ControlCode ParseLine_ControlCode(string Input) { if (!ValidateNonStdEntry(Input)) throw new FormatException("Malformed entry"); string[] entrysplit = Input.Split(new char[] { '=' }, 2); if (entrysplit[1].Contains(',')) { // has arguments, parse them var paramsplit = entrysplit[1].Split(','); var paramlist = new LogicalTable.ControlCode.Parameter[paramsplit.Length - 1]; for (int t = 1; t < paramsplit.Length; t++) { if (!paramsplit[t].Contains('=')) throw new ArgumentException("Malformed parameter"); var paramdefsplit = paramsplit[t].Split('='); switch (paramdefsplit[1].ToUpper()) { case "%X": paramlist[t-1] = new LogicalTable.ControlCode.Parameter( LogicalTable.ControlCode.Parameter.NumberType.Hex, paramdefsplit[0]); break; case "%B": paramlist[t-1] = new LogicalTable.ControlCode.Parameter( LogicalTable.ControlCode.Parameter.NumberType.Binary, paramdefsplit[0]); break; case "%D": paramlist[t-1] = new LogicalTable.ControlCode.Parameter( LogicalTable.ControlCode.Parameter.NumberType.Decimal, paramdefsplit[0]); break; default: throw new ArgumentException("Invalid placeholder type"); } } // param list object has been created if (paramsplit[0].Substring(paramsplit[0].Length - 1) != "]") { var formatsplit = paramsplit[0].Split(']'); formatsplit[1] = formatsplit[1].Replace("\\n", Environment.NewLine); return new LogicalTable.ControlCode(formatsplit[0].Substring(1), formatsplit[1], paramlist); } else return new LogicalTable.ControlCode(GetLabel(paramsplit[0]), null, paramlist); } else // no parameters { if (entrysplit[1].Substring(entrysplit[1].Length) != "]") { var formatsplit = entrysplit[1].Split(']'); formatsplit[1] = formatsplit[1].Replace("\\n", Environment.NewLine); return new LogicalTable.ControlCode(formatsplit[0].Substring(1), formatsplit[1]); } else return new LogicalTable.ControlCode(GetLabel(entrysplit[1])); } }
private LogicalTable.ControlCode ParseLine_ControlCode(string Input) { if (!ValidateNonStdEntry(Input)) { throw new FormatException("Malformed entry"); } string[] entrysplit = Input.Split(new char[] { '=' }, 2); if (entrysplit[1].Contains(',')) { // has arguments, parse them var paramsplit = entrysplit[1].Split(','); var paramlist = new LogicalTable.ControlCode.Parameter[paramsplit.Length - 1]; for (int t = 1; t < paramsplit.Length; t++) { if (!paramsplit[t].Contains('=')) { throw new ArgumentException("Malformed parameter"); } var paramdefsplit = paramsplit[t].Split('='); switch (paramdefsplit[1].ToUpper()) { case "%X": paramlist[t - 1] = new LogicalTable.ControlCode.Parameter( LogicalTable.ControlCode.Parameter.NumberType.Hex, paramdefsplit[0]); break; case "%B": paramlist[t - 1] = new LogicalTable.ControlCode.Parameter( LogicalTable.ControlCode.Parameter.NumberType.Binary, paramdefsplit[0]); break; case "%D": paramlist[t - 1] = new LogicalTable.ControlCode.Parameter( LogicalTable.ControlCode.Parameter.NumberType.Decimal, paramdefsplit[0]); break; default: throw new ArgumentException("Invalid placeholder type"); } } // param list object has been created if (paramsplit[0].Substring(paramsplit[0].Length - 1) != "]") { var formatsplit = paramsplit[0].Split(']'); formatsplit[1] = formatsplit[1].Replace("\\n", Environment.NewLine); return(new LogicalTable.ControlCode(formatsplit[0].Substring(1), formatsplit[1], paramlist)); } else { return(new LogicalTable.ControlCode(GetLabel(paramsplit[0]), null, paramlist)); } } else // no parameters { if (entrysplit[1].Substring(entrysplit[1].Length) != "]") { var formatsplit = entrysplit[1].Split(']'); formatsplit[1] = formatsplit[1].Replace("\\n", Environment.NewLine); return(new LogicalTable.ControlCode(formatsplit[0].Substring(1), formatsplit[1])); } else { return(new LogicalTable.ControlCode(GetLabel(entrysplit[1]))); } } }