public static string HandleParsingErrors(this string code, ParsingErrors parsingErrors) { foreach (var errorDetector in ErrorDetectors) { foreach (var error in errorDetector.FindErrors(code)) parsingErrors.Add(error); } return code; }
private static void HandleIndexStyles(MethodCall[] methodCalls, Algo algo, ParsingErrors parsingErrors) { var setIndexStyleCalls = methodCalls.Where(call => call.MethodName == "SetIndexStyle"); var indexesStyles = new Dictionary<int, DrawingShapeStyle>(); foreach (var methodCall in setIndexStyleCalls) { int index; if (!int.TryParse(methodCall.Parameters[0], out index)) { parsingErrors.Add(ErrorType.NotSupportedWarning, "SetIndexStyle", "Can't cast to int: " + methodCall.Parameters[0]); continue; } var drawingShapeStyle = methodCall.Parameters[1].ToDrawingShapeStyle(); indexesStyles[index] = drawingShapeStyle; if (methodCall.Parameters.Length >= 4) { int width; if (int.TryParse(methodCall.Parameters[3], out width)) algo.Widths[index] = width; } } foreach (var keyValuePair in indexesStyles) { algo.Styles[keyValuePair.Key] = keyValuePair.Value; } }