public ApiCall(string parentPropertyName, string factoryMethodName) { Name = parentPropertyName; FactoryMethodCall = new MemberCall { Name = factoryMethodName }; }
private static void Print( MemberCall call, StringBuilder sb, int depth, bool openParenthesisOnNewLine = false, bool closingParenthesisOnNewLine = false, bool useCurliesInsteadOfParentheses = false) { var openParen = useCurliesInsteadOfParentheses ? "{" : "("; var closeParen = useCurliesInsteadOfParentheses ? "}" : ")"; Print(call.Name, sb, depth); MethodCall methodCall = call as MethodCall; if (methodCall != null) { if (methodCall.Arguments == null || !methodCall.Arguments.Any()) { Print(openParen + closeParen, sb, 0); return; } if (openParenthesisOnNewLine) { PrintNewLine(sb); Print(openParen, sb, depth); } else { Print(openParen, sb, 0); } PrintNewLine(sb); bool needComma = false; foreach (var block in methodCall.Arguments) { if (needComma) { Print(",", sb, 0); PrintNewLine(sb); } if (block is string) { Print( (string)block, sb, depth + 1); } else if (block is SyntaxKind) { Print("SyntaxKind." + ((SyntaxKind)block).ToString(), sb, depth + 1); } else if (block is ApiCall) { Print( block as ApiCall, sb, depth + 1, openParenthesisOnNewLine: openParenthesisOnNewLine, closingParenthesisOnNewLine: closingParenthesisOnNewLine); } needComma = true; } if (closingParenthesisOnNewLine) { PrintNewLine(sb); Print(closeParen, sb, depth); } else { Print(closeParen, sb, 0); } } }
private static void Print( MemberCall call, StringBuilder sb, int depth, bool openParenthesisOnNewLine = false, bool closingParenthesisOnNewLine = false, bool useCurliesInsteadOfParentheses = false) { var openParen = useCurliesInsteadOfParentheses ? "{" : "("; var closeParen = useCurliesInsteadOfParentheses ? "}" : ")"; Print(call.Name, sb, depth); MethodCall methodCall = call as MethodCall; if (methodCall != null) { if (methodCall.Arguments == null || !methodCall.Arguments.Any()) { Print(openParen + closeParen, sb, 0); return; } bool needNewLine = true; if (methodCall.Arguments.Count == 1 && (methodCall.Arguments[0] is string || methodCall.Arguments[0] is SyntaxKind)) { needNewLine = false; } if (openParenthesisOnNewLine && needNewLine) { PrintNewLine(sb); Print(openParen, sb, depth); } else { Print(openParen, sb, 0); } if (needNewLine) { PrintNewLine(sb); } bool needComma = false; foreach (var block in methodCall.Arguments) { if (needComma) { Print(",", sb, 0); PrintNewLine(sb); } if (block is string) { Print( (string)block, sb, needNewLine ? depth + 1 : 0); } else if (block is SyntaxKind) { Print("SyntaxKind." + ((SyntaxKind)block).ToString(), sb, needNewLine ? depth + 1 : 0); } else if (block is ApiCall) { Print( block as ApiCall, sb, depth + 1, openParenthesisOnNewLine: openParenthesisOnNewLine, closingParenthesisOnNewLine: closingParenthesisOnNewLine); } needComma = true; } if (closingParenthesisOnNewLine && needNewLine) { PrintNewLine(sb); Print(closeParen, sb, depth); } else { Print(closeParen, sb, 0); } } }